例如,我有一个从波兰华沙到德国柏林的简单车程。现在,我可以计算所有路线的距离(572公里)。如何计算每个国家/地区的距离?德国〜100公里,波兰〜472公里。
我尝试使用start_location
中的每个来检测国家边界DirectionsLeg
,legs[]
并通过来检测国家名称start_location
。例如:
getCountry(legs[0]) => 'pl'
getCountry(legs[1]) => 'pl'
getCountry(legs[2]) => 'pl'
//border detected
getCountry(legs[3]) => 'de'
getCountry(legs[4]) => 'de'
可以,但是如果route这么“大”,请getCountry()
返回OVER_QUERY_LIMIT
。
更新
感谢Dr.Molle的帮助!
工作提琴。警告:代码可以正常运行,但是尚未优化。小心点!
PS对不起我的英语
您将需要一种方法来避免要求每个步骤来检测国家的方法。
有一个FusionTable,其中包含国家/地区的边界:https : //www.google.com/fusiontables/data? docid=16CTzhDWVwwqa0e5xe4dRxQ9yoyE1hVt_3ekDFQ#map:id =3
可能的工作流程:
请求受路线影响的国家/地区的几何图形。直接使用路径在这里行不通,因为网址太长,因此请根据路线范围过滤结果(返回的结果可能比受影响的国家还多,但没有其他选择)
华沙-柏林路线的示例查询为:
SELECT sovereignt,json_4326
FROM 16CTzhDWVwwqa0e5xe4dRxQ9yoyE1hVt_3ekDFQ
WHERE ST_INTERSECTS(kml_4326,
RECTANGLE(LATLNG(51.88951,13.38593),
LATLNG(52.52003,21.01219)))
此查询中使用的RECTANGLE将基于bounds
给定路由的-property创建。索取样品:http : //jsfiddle.net/doktormolle/vexqe0ps/
根据返回的几何图形,为每个国家/地区创建一个多边形数组(它们不得可见)。
google.maps.geometry.poly.containsLocation()
,以检查是否start_(或结束_)位置被放置在当前多边形内。启用后,将当前步距增加到当前国家/地区的距离。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句