0
我需要突出顯示兩個交叉點之間的一段街道。我發現了一年多前提出的類似問題(請參閱here),其中Google,Bing等不通過其API提供街道數據。有誰知道API中是否有任何變化,以及我是否可以從某處獲取街道位置緯度/經度數據?可能突出街道的一部分?
我需要突出顯示兩個交叉點之間的一段街道。我發現了一年多前提出的類似問題(請參閱here),其中Google,Bing等不通過其API提供街道數據。有誰知道API中是否有任何變化,以及我是否可以從某處獲取街道位置緯度/經度數據?可能突出街道的一部分?
我已經在API V2中完成了這項工作,但不應該難以將其重寫爲V3。
看一看這個網站http://www.fvs.de/anfahrt.php(德國),然後單擊「WEG在顯示地圖zeigen」按鈕(「在地圖中查看方式」),在地圖下方的部分。每個按鈕突出顯示地圖中的另一條街道線。
它基本上是通過使用Google地圖的方向對象來繪製地圖中任意兩個街點之間的路線(例如您的兩個交點)。這些點必須用它們的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});
}
很酷。謝謝。我正在考慮從一個路口到另一個路口的步行路線,但不能保證返回使用我想突出顯示的街道的路徑。我想我將不得不使用開放街道地圖數據來查找街道座標。 – akonsu
我也遇到了計算方向並不總是與我想強調的街道相匹配的問題。通過在搜索字符串中添加額外的中間「to:」點,可以很容易地糾正這個問題,即強制結果使用您的街道: 'gDir.load('from:49.313530,6.969109 to:49.282163,7.010651 to :49.238326,6.977761',{getPolyline:true});' – Jpsy
哦,並找到街道座標:使用Google Maps Labs中的「LatLng Marker」: 打開Google Maps,點擊右上角的小圖標並選擇「地圖實驗室」。向下滾動到「LatLng標記」並啓用它並保存。回到地圖上,右鍵點擊您想要查找座標的任何位置,然後從上下文菜單中選擇「Drop LatLng Marker」。您甚至可以從出現的標記中複製座標值:通過快速點擊三次來標記座標文本,複製,粘貼。 – Jpsy