让用户在Google地图上绘制?

4

有人知道在Google地图上是否可以允许用户从A点到B点绘制一条线吗?

如果可以,通常是如何实现的?

5个回答

2

请查看关于折线的文档。您只需要在地图上添加一个“click”事件,并处理线条的绘制即可。


2
他们有示例代码,允许您这样做(要查看代码,只需单击“查看源代码”):

http://code.google.com/apis/maps/documentation/javascript/examples/polyline-complex.html

将以下事件绑定到您的地图上:onclick。通过查看event.LatLng对象获取纬度和经度,向您的折线(用户正在绘制的线)添加一个点。当用户再次单击时,当新点被推入渲染数组时,折线将自动更新渲染。

这是一个很好的例子,但我的要求不同。我忘了提到我需要用户画曲线 - 不一定是直线。让用户画曲线可行吗? - Genadinik

2

如果你能帮忙,请告诉我 =D。另外,有一个类似的问题在这里,我今天早些时候已经回答了,希望它能对你有所帮助。http://stackoverflow.com/questions/5338279/overlay-in-google-maps/5339832#5339832 - KJYe.Name
谢谢 - 我仍在考虑如何让人们绘画,因为既然他们要做出轨迹,那么线条自然是弯曲的,不像街道一样是网格状的。这是我在入手之前正在考虑和研究的问题。顺便说一下,非常感谢你的帮助! - Genadinik
http://www.comehike.com/draggable_marker.php 也是一个相当不错的地方。谢谢分享。 - Patricia

2

您可以使用Polyline并使用google.maps.LatLng指定两个或更多点。这里是JSFiddle Demo

  //create points on the Polylines
  var flightPlanCoordinates = [
    new google.maps.LatLng(37.772323, -122.214897),
    new google.maps.LatLng(-27.46758, 153.027892)
  ];

  //create the Polyline and feed it points with stroke styling
  var flightPath = new google.maps.Polyline({
    path: flightPlanCoordinates,
    strokeColor: "#FF0000",
    strokeOpacity: 1.0,
    strokeWeight: 2
  });

  //set the polylines on the map
  flightPath.setMap(map);

根据其他人的建议,更详细地说,坐标可以由用户输入,也可以通过单击事件在地图上放置标记作为点,然后将标记坐标作为多段线的点提供,或者您还可以创建一个表单,让用户手动输入他们的地址或经纬度作为点来绘制这些点,但是绘制多段线的详细方式与上面的示例类似,除了经纬度在演示中被静态编码。


2
他希望用户能够在地图上绘制...目前只是静态编码显示了两个点。 - Achilles
@Achilles,这是你需要的,我已经添加了深入的建议。 - KJYe.Name
这不应该被标记为答案;它没有解决 OP 的问题。 - Kalnode

1

是的,它是。请查看MapMyRun.com,这是一个很好的用例示例。


有没有哪个页面比较合适?我试图在那里映射我的运行,但是由于太多控件而杂乱无章,导致我无法完成它并且也得不到任何源示例。:( - Genadinik
这是一个非常功能丰富的Web应用程序,您正在尝试进行反向工程。我只是把它作为一个例子,说明类似的东西是可以做到的。但是请查看Genadnik的早期测试版:http://www.comehike.com/draggable_marker.php(我刚刚测试过)。它可能会给您一些启示,让您知道如何入手。 - Paul Sasik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接