目前,我正在建立一个网络应用程序来绘制我的城市公共交通路线(这些路线不在Google地图中)。我使用编码折线来显示它们并创建了<ul>
,可以从中手动选择它们。它工作正常,但需要添加更多功能。
我想要的是当用户点击地图上的某个点或使用地理定位功能时,会绘制通过附近的路线(如预定义的折线)。
我已经阅读了containsLocation()文档,但它似乎没有做到这一点。我是否缺少一个特定的图书馆来执行此操作?
已经搜索了很多,无法找到我想要的东西。
目前,这是绘制折线的代码(从<li onclick='drawfunction()';>
元素调用时):
function (drawingfunction) {
var map = new google.maps.Map(document.getElementById("map-canvas"), myOptions);
var decodedPath = google.maps.geometry.encoding.decodePath('encodedpolyline');
var decodedLevels = decodeLevels('encodedlevels');
}
答案 0 :(得分:2)
我想您想查看google.maps.geometry.poly.isLocationOnEdge
功能。
假设您的路线Polyline
位于routes
数组中:
for (var i = 0; i < routes.length; i++) {
var matching = google.maps.geometry.poly.isLocationOnEdge(
location, routes[i], TOLERANCE);
routes[i].setOptions({
strokeColor: matching ? MATCHING_COLOR : DEFAULT_COLOR,
strokeOpacity: matching ? 1 : .7
});
}
您需要使用容差参数来为您的点击目标找到合适的尺寸。
如果你有很多路线(或复杂的路线),这可能会很慢。如果是,那么您需要调查数据结构,例如quad tree,以便在调用isLocationOnEdge
之前缩小路线范围。