我正在尝试构建网络应用程序,您可以在其中输入您的地址,它会为您提供您所在地区的巴士站列表。我想为此使用谷歌地图,但我找不到为此使用它们的方法。有没有办法以 JSON 或 XML 格式获取地图上的点列表?我尝试了 Google Maps Places API,但它并没有以这种方式工作。我唯一发现的是这个例子 - http://gmaps-samples-v3.googlecode.com/svn/trunk/localsearch/places.html但这不是我需要的。
那么,有人知道吗?
我正在尝试构建网络应用程序,您可以在其中输入您的地址,它会为您提供您所在地区的巴士站列表。我想为此使用谷歌地图,但我找不到为此使用它们的方法。有没有办法以 JSON 或 XML 格式获取地图上的点列表?我尝试了 Google Maps Places API,但它并没有以这种方式工作。我唯一发现的是这个例子 - http://gmaps-samples-v3.googlecode.com/svn/trunk/localsearch/places.html但这不是我需要的。
那么,有人知道吗?
Google Places API 上确实有停止信息,但您需要非常具体地形成您的查询以使其工作。
关键是使用 rankby=distance 和 radius= 和 types=bus_station 的附近搜索
默认的 rankby prominence 很少显示公交车站。
示例查询:
我认为它可以帮助你
<script>
// This example requires the Places library. Include the libraries=places
// parameter when you first load the API. For example:
// <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">
var map;
var infowindow;
function initMap() {
var pyrmont = {lat: 38.06908229560463, lng: 46.31730562744135};
map = new google.maps.Map(document.getElementById('map'), {
center: pyrmont,
zoom: 15
});
infowindow = new google.maps.InfoWindow();
var service = new google.maps.places.PlacesService(map);
service.nearbySearch({
location: pyrmont,
radius: 1000,
types: ['bus_station','transit_station']
}, callback);
}
function callback(results, status) {
if (status === google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
}
}
}
function createMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(place.name);
infowindow.open(map, this);
});
}
</script>
这不是 Google 提供的服务。他们肯定会记录您需要的所有东西,但他们会在内部进行所有计算。
一种选择(可能有点困难)是为他们的巴士站位置挖掘公共交通时刻表。如果您的 Web 应用程序要支持一个小区域(即城市),这可能是一个选择。这是有风险的,因为如果页面发生变化,那么您将不得不重新配置数据挖掘应用程序,但是尝试从 Google(或其他地方)挖掘数据仍然会遇到同样的问题 - 如果您能找到一种方法来获取带有位置的巴士站列表并围绕它构建您的应用程序,它可能随时更改并破坏您的应用程序。
Ali Seify 的回答是正确的,只是 API 文档声明 API 将仅使用 types 参数中的第一个元素,并且transit_station
type 是 bus stop 的正确类型。
另外,为了获得最近的公交车站,建议使用参数rankBy: google.maps.places.RankBy.DISTANCE
,radius
在这种情况下不能使用参数。
service.nearbySearch({
location: pyrmont,
rankBy: google.maps.places.RankBy.DISTANCE,
types: ['transit_station']
}, callback);
您可以为此使用Google Fusion Tables。但是,您必须自己输入数据,除非其他人已经输入了数据。Google 地图 API 支持 Google Fusion Tables。