如何在Google maps api3中使用一条线连接两个标记

时间:2015-06-05 13:14:43

标签: javascript html google-maps google-maps-api-3 coordinates

我制作了一个html文件,该文件从XML文件中获取数据并使用其上的数据在地图上绘制两个标记是否有任何方法可以连接这两个没有永久位置的标记这是我的代码标记。

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Simple markers</title>
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>
    <script>
var map;
window.onload=function ()
{
    var myLatlng = new google.maps.LatLng(0,0);
    var mapOptions = {
        zoom: 4,
        center: myLatlng
    }
    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
    //google.maps.event.addDomListener(window, 'load', mapready);
    getdata();
    setInterval(function () {getdata()}, 1000);
}

function getdata() 
{
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
   xmlhttp.open("GET","xxxxxxxxxxx",true);
   xmlhttp.onreadystatechange=function () {gotdata()};
   xmlhttp.send();
}
var lastCoordinates={};
var polyline = new google.maps.Polyline({map:map})
var path = [];
function gotdata(){

    if (xmlhttp.readyState == 4){

        var d = xmlhttp.responseXML.documentElement 
            //innerHTML shouldn't work for XML-Nodes
            y = d.getElementsByTagName("y")[0].textContent,
            x = d.getElementsByTagName("x")[0].textContent,
            h = [x,y].join('_');
        if(lastCoordinates[h]){
          return;
        } 

        lastCoordinates[h]= new google.maps.Marker({
                              position: new google.maps.LatLng(x,y),
                              map: map,
                              title: 'YAY'
                            });
         path.push(lastcoordinates[h].getPosition());
         if (path.length >= 2) {
           polyline.setPath(path);
         }

    }
}

这是我的XML文件中的内容

<Location>
<x>42</x>
<y>14</y>
</Location>

它从中获取x和y数据,当我更改它时,地图会创建另一个文件。

1 个答案:

答案 0 :(得分:3)

  1. 创建polyline(有关可用的选项,请参阅documentation

    var polyline = new google.maps.Polyline({
       // set desired options for color, opacity, width, etc.
       strokeColor:"#0000FF",  // blue (RRGGBB, R=red, G=green, B=blue)
       strokeOpacity: 0.4      // opacity of line
    }); // create the polyline (global)
    var path = []; // global variable to hold all the past locations
    
  2. 用点数更新

    function gotdata(){
    
        if (xmlhttp.readyState == 4){
    
            var d = xmlhttp.responseXML.documentElement 
                //innerHTML shouldn't work for XML-Nodes
                y = d.getElementsByTagName("y")[0].textContent,
                x = d.getElementsByTagName("x")[0].textContent,
                h = [x,y].join('_');
            if(lastCoordinates[h]){
              return;
            } 
    
            lastCoordinates[h]= new google.maps.Marker({
                                  position: new google.maps.LatLng(x,y),
                                  map: map,
                                  title: 'YAY'
                                });
             path.push(lastCoordinates[h].getPosition());
             if (path.length >= 2) {
               // display the polyline once it has more than one point
               polyline.setMap(map);
               polyline.setPath(path);
             }
    
        }
    }
    
  3. proof of concept fiddle