2015-04-06 138 views
2

我在探索Google Maps Direction API,并注意到我得到一个overview_polylinepoints结果。我可以在此处的“编码折线”字段中输入该值:https://developers.google.com/maps/documentation/utilities/polylineutility。结果似乎是从开始位置到结束位置的实际行车路线。数据看起来很适合我。在Google地图中绘制折线

我想在谷歌地图中看到这个,但没有在开始和结束位置之间的所有地图标记。我如何获取这些信息并将其绘制在Google地图上?

+0

只需设置选项'苏[DirectionsRenderer](https://developers.google.com/maps/documentation/javascript/reference?hl=zh-CN&csw=1#DirectionsRenderer)的“ppressMarkers”设置为“true”,路线将被标记为无标记 –

+0

方向请求看起来像?你目前如何显示它? – geocodezip

回答

5

从谷歌地图的JavaScript API开发人员指南:Geometry Library: Geometry Encoding

为了解码编码的路径,只需拨打decodePath()传递方法的编码字符串。

需要说明的是反斜杠编码的提防(更换任何发生在“\\”与你的编码路径字符串“\”,如果你有问题)

example fiddle

代码片段:

var map; 
 
var bounds = new google.maps.LatLngBounds(); 
 

 
function initialize() { 
 
    map = new google.maps.Map(
 
    document.getElementById("map_canvas"), { 
 
     center: new google.maps.LatLng(34, 108), 
 
     zoom: 13, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }); 
 

 
    var jsonData = { 
 
    "overview_polyline": { 
 
     "points": "e`[email protected]@[email protected]@[email protected]@v]_}@[email protected]@[email protected]][email protected][email protected][email protected]@~QebBrJq`[email protected]@[email protected]@}}[email protected]@o{Ba]m~EtVewAnBa`@[email protected]}dDufGqwA_|[email protected][email protected]{`Ee]qkB}[email protected]|[email protected]}At]{[email protected]}[email protected]@aeIm^{[email protected]`BkVueH}gDwuXu`[email protected][ybCo^[email protected]@yyAe`@[email protected][email protected]{[email protected]@e_Fq}@o`[email protected]}[email protected]`@[email protected]@[email protected][[email protected]@iiC}[email protected]_fBmuAypFyIiqA}BwyBy`@[email protected]{[email protected][email protected]{[email protected]{@s{[email protected]}[email protected][orAk]wrA_TyzAnFefAa\\guB_OmwAwF{[email protected]}[email protected]}Qo_RgMo|A|[email protected]@u{[email protected]_D{[email protected]@w\\[email protected]@[email protected][email protected]]urAyoD}[email protected]@[email protected]`Bq\\}[email protected]}[email protected]|@tBmlBebB{[email protected]{ConAedC}L}[email protected]@[email protected]}[email protected]}@[email protected]_bBg|@csBm_Bo|BkaC{[email protected]{[email protected]@[email protected]@_}@e`@[email protected]@etA}[email protected][wbBu]}gAuoDeeG{[email protected]@ugAu_L{xSshEe_KieDm|[email protected]{QuUg`BipF{[email protected]}NsvAiyFs}@izFjwAqrGtHkbCeB{[email protected]~CgSk|@mB}[email protected]_BgjFqqC}gH}`CwvG}cA{cB}[email protected]@[email protected][email protected]{uAmrDivDw|E{[email protected]@[email protected]}[email protected]@[email protected][email protected]_kCk}@smDkVg{Bk}@[email protected]_sEaPwdC~KazF{EcpCrEmeGl][email protected]{[email protected][email protected]@[email protected][email protected]@dBvA" 
 
    } 
 
    }; 
 
    var path = google.maps.geometry.encoding.decodePath(jsonData.overview_polyline.points); 
 
    console.log(path); 
 
    for (var i = 0; i < path.length; i++) { 
 
    bounds.extend(path[i]); 
 
    } 
 

 
    var polyline = new google.maps.Polyline({ 
 
    path: path, 
 
    strokeColor: '#FF0000', 
 
    strokeOpacity: 0.8, 
 
    strokeWeight: 2, 
 
    fillColor: '#FF0000', 
 
    fillOpacity: 0.35, 
 
    map: map 
 
     // strokeColor: "#0000FF", 
 
     // strokeOpacity: 1.0, 
 
     // strokeWeight: 2 
 
    }); 
 
    polyline.setMap(map); 
 
    map.fitBounds(bounds); 
 

 
} 
 

 

 
google.maps.event.addDomListener(window, "load", initialize);
html, 
 
body, 
 
#map_canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry"></script> 
 
<div id="map_canvas" style="border: 2px solid #3872ac;"></div>

+0

谢谢。为什么这没有一个开始和结束标记?我错看了折线来制作我的地图吗?还有什么我可以做的只是呈现一个简单的地图,显示旅行的开始和结束点? – StackOverflowNewbie

+0

是不是你的问题“没有在开始和结束位置之间的所有地图标记”?还是我误解了? – geocodezip

+0

是的。我不希望所有这些**之间**。不过,我确实希望那些在开始和结束时。基本上,我希望它看起来像我从Google地图获取路线时的样子。 – StackOverflowNewbie