根据用户点击和/或当前用户位置绘制折线

时间:2015-01-04 05:03:56

标签: javascript google-maps google-polyline

目前,我正在建立一个网络应用程序来绘制我的城市公共交通路线(这些路线不在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');
    }

1 个答案:

答案 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之前缩小路线范围。