【问题标题】:draw line between marker and fixed point - Google Maps API v3在标记和固定点之间画线 - Google Maps API v3
【发布时间】:2012-11-25 19:23:59
【问题描述】:

如何在标记和固定点之间画线 - Google Maps API v3

我使用该代码在 2 个固定点之间画了一条线 并放置一个标记 使用谷歌 api v3

如何替换 标记位置 而不是 2 个固定点之一?

<!DOCTYPE html>
<html>
<head>
<script
src="http://maps.googleapis.com/maps/api/js?key=AIzaSyCwID2UsBJvwVKEMx_U53brmIC8EOLsBFo&sensor=false">
</script>

<script>


function initialize()
{

var x=new google.maps.LatLng(52.395715,4.888916);


var mapProp = {
  center:x,
  zoom:4,
  mapTypeId:google.maps.MapTypeId.ROADMAP
  };

var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);


 google.maps.event.addListener(map, "mousemove", function(pt) { 
      document.getElementById("latlgn").innerHTML = pt.latLng; 
    });

      var marker = new google.maps.Marker({
  draggable: true,
  position: x,
  map: map,
  title: "Your location"
  });


  google.maps.event.addListener(marker, 'dragend', function (event) {
    document.getElementById("latbox").value = this.getPosition().lat();
    document.getElementById("lngbox").value = this.getPosition().lng();
});

var lat = "80";
var lng = "80"; 
var stavanger=new google.maps.LatLng(lat,lng);
var london=new google.maps.LatLng(51.508742,-0.120850);

var myTrip=[stavanger,london];
var flightPath=new google.maps.Polyline({
  path:myTrip,
  strokeColor:"#0000FF",
  strokeOpacity:0.9,
  strokeWeight:2
  });

flightPath.setMap(map);

google.maps.event.addDomListener(window, 'load', initialize);
}







</script>
</head>
 <div id="latlong">
    <p>Latitude: <input size="20" type="text" id="latbox" name="lat" ></p>
    <p>Longitude: <input size="20" type="text" id="lngbox" name="lng" ></p>
  </div>
<body onLoad="initialize()">

<div id="googleMap" style="width:500px;height:380px;"></div>
<div id="latlgn"></div>
</body>
</html>

【问题讨论】:

    标签: javascript google-maps-api-3


    【解决方案1】:

    myTrip-变量设置为

    [stavanger,marker.getPosition()]
    

    这将首先在 stavanger 和标记位置之间画一条线。

    要在标记移动时保持线条更新,请在 marker.dragend 的回调中使用 PolyLine(flightPath) 的 setPath 方法

      google.maps.event.addListener(marker, 'dragend', function (event) {
        document.getElementById("latbox").value = this.getPosition().lat();
        document.getElementById("lngbox").value = this.getPosition().lng();
        flightPath.setPath([flightPath.getPath().getAt(0),
                            new google.maps.LatLng(this.getPosition().lat(),
                                                   this.getPosition().lng())]);
    });
    

    根据要求,将行尾设置为中心的修改:

    var myTrip=[stavanger,map.getCenter()];
    
    google.maps.event.addListener(map, 'center_changed', function (event) {
        flightPath.setPath([flightPath.getPath().getAt(0),this.getCenter()])
    });
    

    【讨论】:

    • 谢谢......我可以将它与屏幕中心链接而不是标记吗??
    • 是的,地图有getCenter()方法,还有事件center_changed(地图也有),只需将折线的变量点设置为map.getCenter()
    • 你能把修改后的代码发给我吗?还是解释一下?
    • 谢谢,请你检查那个问题..它与那个问题有关stackoverflow.com/questions/13557473/…
    猜你喜欢
    • 2012-06-09
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2016-01-01
    • 2013-01-27
    • 2012-03-24
    • 1970-01-01
    相关资源
    最近更新 更多