【发布时间】:2011-10-08 19:15:00
【问题描述】:
我需要突出显示两个十字路口之间的一段街道。我发现了一个一年多前提出的类似问题(请参阅here),它说 Google、Bing 等不通过其 API 提供街道数据。有谁知道 API 中是否有任何变化,以及我现在是否可以从某个地方获取街道位置纬度/经度数据?
【问题讨论】:
标签: google-maps google-maps-api-3 bing-maps
我需要突出显示两个十字路口之间的一段街道。我发现了一个一年多前提出的类似问题(请参阅here),它说 Google、Bing 等不通过其 API 提供街道数据。有谁知道 API 中是否有任何变化,以及我现在是否可以从某个地方获取街道位置纬度/经度数据?
【问题讨论】:
标签: google-maps google-maps-api-3 bing-maps
我已经在 API V2 中做到了这一点,但是为 V3 重写它应该不难。
查看此网站http://www.fvs.de/anfahrt.php(德语),然后单击地图下方部分中的“Weg in Karte zeigen” 按钮(“在地图中显示方式”)。每个按钮突出显示地图中的另一条街道线。
这基本上是通过使用谷歌地图的方向对象来绘制地图中两个任意街道点之间的路线(例如,您的两个十字路口)。这些点必须使用它们的 LatLng 坐标进行编码。这是一个代码示例(据说这是 API V2):
function initMap() { // called by page onload event
if (GBrowserIsCompatible()) {
// Display the map, with some controls and set the initial location
gMap = new GMap2(document.getElementById("map_canvas"));
gMap.addControl(new GLargeMapControl());
// ...
gMap.setCenter(GLatLng(49.238326, 6.977761), 15);
// init directions object and attach listener to handle route loads from function highliteRoute()
gDir = new GDirections();
gPoly = null;
GEvent.addListener(gDir, 'load', function(){
gPoly = gDir.getPolyline();
gMap.addOverlay(gPoly);
// zoom & pan to poly
var polyBds = gPoly.getBounds();
var polyZoom = gMap.getBoundsZoomLevel(polyBds);
gMap.setZoom(polyZoom);
gMap.panTo(polyBds.getCenter());
});
}
}
function highliteRoute(){
if(gPoly!=null) gPoly.hide();
gDir.load('from: 49.313530,6.969109 to: 49.238326,6.977761', {getPolyline:true});
}
【讨论】:
gDir.load('from: 49.313530,6.969109 to: 49.282163,7.010651 to: 49.238326,6.977761', {getPolyline:true});