【问题标题】:how to move markers in google map API?如何在谷歌地图 API 中移动标记?
【发布时间】:2015-06-27 09:18:56
【问题描述】:

我想在同一个谷歌地图上移动 2 个标记,但在我的代码中找不到问题。我可以移动第一个标记但我不能移动第二个标记,可以在同一张地图上同时移动两个标记吗? 如何同时移动 2 个标记?

<!DOCTYPE html>
<html>
  <head>
    <title>HTML5</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=650, user-scalable=yes">
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
    <style>
      html, body {
        height: 100%;
        margin: 0;
      }

      #mapcanvas {
        height: 97%;
      }

      #info {
        width: auto;
        margin: 5px;
        height: 3%;
      }
    </style>

    <script>
      var map;
      var latLonList = [
        { lat: 45.54169245190391, lon: -73.53928729891777 },
        { lat: 45.54173002374242, lon: -73.53945091366768 },
        { lat: 45.541743173879944, lon: -73.53949382901192 },
        { lat: 45.541790138631775, lon: -73.53962525725365 },
        { lat: 45.541844617694764, lon: -73.53980496525764 },
        { lat: 45.54189721811927, lon: -73.5399578511715 },
        { lat: 45.54193666840536, lon: -73.5401026904583 },
        { lat: 45.54198363299557, lon: -73.5402475297451 },
        { lat: 45.542068169159045, lon: -73.5405720770359 },
        { lat: 45.54214706946365, lon: -73.54082688689232 },
        { lat: 45.54222221250792, lon: -73.54105487465858 },
        { lat: 45.54226729828628, lon: -73.54119434952736 },
        { lat: 45.54235746973452, lon: -73.54123994708061 },
        { lat: 45.542543447889805, lon: -73.5411112010479 },
        { lat: 45.542718154081314, lon: -73.54099586606026 },
        { lat: 45.54289661683465, lon: -73.54089394211769 },
        { lat: 45.54298866582284, lon: -73.54103341698647 },
        { lat: 45.54308071466031, lon: -73.54133650660515 },
        { lat: 45.543180277518914, lon: -73.5413445532322 },
        { lat: 45.54330050413203, lon: -73.54127749800682 },
        { lat: 45.54337001002545, lon: -73.54111924767494 }
      ]

      $(document).ready(function () {
        var mapOptions = {
          zoom: 13,
          center: new google.maps.LatLng(43, 0),
        };

        map = new google.maps.Map($('#mapcanvas')[0], mapOptions);

        //*********************************************************************
        // Add the layer showing the inventory
        //*********************************************************************

        var marker = null;
        var markerTwo = null;
        var i = 0;
        var j = 1;

        function autoUpdate() {
          navigator.geolocation.getCurrentPosition(function (position) {

            var newPoint = new google.maps.LatLng(latLonList[i].lat, latLonList[i].lon);

            var secondPoint = new google.maps.LatLng(latLonList[j].lat, latLonList[j].lon);


            if (marker) {
              // Marker already created - Move it
              marker.setPosition(newPoint);
            }
            else {
              // Marker does not exist - Create it
              marker = new google.maps.Marker({
                position: newPoint,
                map: map,
                draggable: true
              });
            }

            if (markerTwo) {
              // Marker already created - Move it
              markerTwo.setPosition(secondPoint);
            }
            else {
              // Marker does not exist - Create it
              markerTwo = new google.maps.Marker({
                position: secondPoint,
                map: map,
                draggable: true
              });
            }

            map.setCenter(newPoint);
          });

          // Call the autoUpdate() function every 5 seconds
          setTimeout(autoUpdate, 3000);
          if (i == 20) {
            i = 0
          }
          else {
            i++;
          }
        }

        if (j == 19) {
          j = 0
        }
        else {
          j++;
        }
        autoUpdate();
      });//end document ready
    </script>
  </head>
  <body>
    <div id="info">trying to update location every 5 secs   -  new latitude longitude :  <span id="coordinates"></span></div>
    <div id="mapcanvas">
    </div>
  </body>
</html>

【问题讨论】:

  • 除非您向我们展示,否则我们也无法在您的代码中找到问题。
  • 如果您将实际代码添加到问题中,您更有可能获得帮助,因为它更容易获得并且将永远可用。如果代码位于其他任何地方,则它有可能不可用。如果有人没有或不想要 DropBox 帐户怎么办?
  • 我做到了!你觉得我的代码怎么样?你可以找到解决办法

标签: javascript html google-maps dictionary marker


【解决方案1】:

答案:

 map=new google.maps.Map($('#mapcanvas')[0], mapOptions);



            //*********************************************************************
            // Add the layer showing the inventory
            //*********************************************************************

                var marker = null;
                var marker2 = null ; 
                var i = 0;
                function autoUpdate() {


                  navigator.geolocation.getCurrentPosition(function(position, pos) {  
                        //var newPoint = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
                        var newPoint = new google.maps.LatLng(latLonList[i].lat, latLonList[i].lon);

                        var myLatlng = new google.maps.LatLng(latLonList[i+1].lat, latLonList[i+1].lon);

                        if (marker2) {
                          // Marker already created - Move it
                          marker2.setPosition(myLatlng);
                        }
                        else {
                                marker2 = new google.maps.Marker({
                                position: myLatlng,
                                map: map,
                                title: 'Client 2'

                          });
                       }
                        if (marker) {
                          // Marker already created - Move it
                          marker.setPosition(newPoint);
                        }
                        else {
                          // Marker does not exist - Create it
                          marker = new google.maps.Marker({
                                position: newPoint,
                                map: map,
                                title: 'Client 1'

                          });
                        }



                        // Center the map on the new position
                        map.setCenter(myLatlng);
                  }); 

                  // Call the autoUpdate() function every 5 seconds
                  setTimeout(autoUpdate, 3000);
                  if (i == 19)
                        i = 0
                  else 
                        i++;
                }

                autoUpdate();


        });//end document ready

【讨论】:

  • 出了什么问题?
  • 对于第二个标记 marker2 我编码:marker.setPosition(myLatlng);所以我改变了 marker2.setPosition(myLatlng);系统混淆了这两个标记:P
【解决方案2】:

http://geekonjava.blogspot.in/2014/10/how-to-make-animated-moving-marker-on.html

点击此链接对您有帮助

html{height:100%;}
body{height:100%;margin:0px;font-family: Helvetica,Arial;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>GeekOnJava: Directions Complex</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type ="text/javascript" src="http://www.geocodezip.com/scripts/v3_epoly.js"></script>
<script type="text/javascript">
  var map;
  var directionDisplay;
  var directionsService;
  var stepDisplay;
 
  var position;
  var marker = [];
  var polyline = [];
  var poly2 = [];
  var poly = null;
  var startLocation = [];
  var endLocation = [];
  var timerHandle = [];
    
  
  var speed = 0.000005, wait = 1;
  var infowindow = null;
  
  var myPano;   
  var panoClient;
  var nextPanoId;
  
  var startLoc = new Array();
  startLoc[0] = 'rio claro, trinidad';
  startLoc[1] = 'preysal, trinidad';
  startLoc[2] = 'san fernando, trinidad';
  startLoc[3] = 'couva, trinidad';

  var endLoc = new Array();
  endLoc[0] = 'princes town, trinidad';
  endLoc[1] = 'tabaquite, trinidad';
  endLoc[2] = 'mayaro, trinidad';
  endLoc[3] = 'arima, trinidad';


  var Colors = ["#FF0000", "#00FF00", "#0000FF"];


function initialize() {  

  infowindow = new google.maps.InfoWindow(
    { 
      size: new google.maps.Size(150,50)
    });

    var myOptions = {
      zoom: 16,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    address = 'Trinidad and Tobago'
    geocoder = new google.maps.Geocoder();
    geocoder.geocode( { 'address': address}, function(results, status) {
     map.fitBounds(results[0].geometry.viewport);

    }); 
  // setRoutes();
  } 


function createMarker(latlng, label, html) {
// alert("createMarker("+latlng+","+label+","+html+","+color+")");
    var contentString = '<b>'+label+'</b><br>'+html;
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        title: label,
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });
        marker.myname = label;


    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
        });
    return marker;
}  

function setRoutes(){   

    var directionsDisplay = new Array();

    for (var i=0; i< startLoc.length; i++){

    var rendererOptions = {
        map: map,
        suppressMarkers : true,
        preserveViewport: true
    }
    directionsService = new google.maps.DirectionsService();

    var travelMode = google.maps.DirectionsTravelMode.DRIVING;  

    var request = {
        origin: startLoc[i],
        destination: endLoc[i],
        travelMode: travelMode
    };  

        directionsService.route(request,makeRouteCallback(i,directionsDisplay[i]));

    }   


    function makeRouteCallback(routeNum,disp){
        if (polyline[routeNum] && (polyline[routeNum].getMap() != null)) {
         startAnimation(routeNum);
         return;
        }
        return function(response, status){
          
          if (status == google.maps.DirectionsStatus.OK){

            var bounds = new google.maps.LatLngBounds();
            var route = response.routes[0];
            startLocation[routeNum] = new Object();
            endLocation[routeNum] = new Object();


            polyline[routeNum] = new google.maps.Polyline({
            path: [],
            strokeColor: '#FFFF00',
            strokeWeight: 3
            });

            poly2[routeNum] = new google.maps.Polyline({
            path: [],
            strokeColor: '#FFFF00',
            strokeWeight: 3
            });     


            // For each route, display summary information.
            var path = response.routes[0].overview_path;
            var legs = response.routes[0].legs;


            disp = new google.maps.DirectionsRenderer(rendererOptions);     
            disp.setMap(map);
            disp.setDirections(response);


            //Markers               
            for (i=0;i<legs.length;i++) {
              if (i == 0) { 
                startLocation[routeNum].latlng = legs[i].start_location;
                startLocation[routeNum].address = legs[i].start_address;
                // marker = google.maps.Marker({map:map,position: startLocation.latlng});
                marker[routeNum] = createMarker(legs[i].start_location,"start",legs[i].start_address,"green");
              }
              endLocation[routeNum].latlng = legs[i].end_location;
              endLocation[routeNum].address = legs[i].end_address;
              var steps = legs[i].steps;

              for (j=0;j<steps.length;j++) {
                var nextSegment = steps[j].path;                
                var nextSegment = steps[j].path;

                for (k=0;k<nextSegment.length;k++) {
                    polyline[routeNum].getPath().push(nextSegment[k]);
                    //bounds.extend(nextSegment[k]);
                }

              }
            }

         }       

         polyline[routeNum].setMap(map);
         //map.fitBounds(bounds);
         startAnimation(routeNum);  

    } // else alert("Directions request failed: "+status);

  }

}

    var lastVertex = 1;
    var stepnum=0;
    var step = 50; // 5; // metres
    var tick = 100; // milliseconds
    var eol= [];
//----------------------------------------------------------------------                
 function updatePoly(i,d) {
 // Spawn a new polyline every 20 vertices, because updating a 100-vertex poly is too slow
    if (poly2[i].getPath().getLength() > 20) {
          poly2[i]=new google.maps.Polyline([polyline[i].getPath().getAt(lastVertex-1)]);
          // map.addOverlay(poly2)
        }

    if (polyline[i].GetIndexAtDistance(d) < lastVertex+2) {
        if (poly2[i].getPath().getLength()>1) {
            poly2[i].getPath().removeAt(poly2[i].getPath().getLength()-1)
        }
            poly2[i].getPath().insertAt(poly2[i].getPath().getLength(),polyline[i].GetPointAtDistance(d));
    } else {
        poly2[i].getPath().insertAt(poly2[i].getPath().getLength(),endLocation[i].latlng);
    }
 }
//----------------------------------------------------------------------------

function animate(index,d) {
   if (d>eol[index]) {

      marker[index].setPosition(endLocation[index].latlng);
      return;
   }
    var p = polyline[index].GetPointAtDistance(d);

    //map.panTo(p);
    marker[index].setPosition(p);
    updatePoly(index,d);
    timerHandle[index] = setTimeout("animate("+index+","+(d+step)+")", tick);
}

//-------------------------------------------------------------------------

function startAnimation(index) {
        if (timerHandle[index]) clearTimeout(timerHandle[index]);
        eol[index]=polyline[index].Distance();
        map.setCenter(polyline[index].getPath().getAt(0));

        poly2[index] = new google.maps.Polyline({path: [polyline[index].getPath().getAt(0)], strokeColor:"#FFFF00", strokeWeight:3});

        timerHandle[index] = setTimeout("animate("+index+",50)",2000);  // Allow time for the initial map display
}

//----------------------------------------------------------------------------    
</script>
</head>
  
<body onload="initialize()">

<div id="tools">

    <button onclick="setRoutes();">Start</button>

</div>

<div id="map_canvas" style="width:100%;height:100%;"></div>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-162157-1";
urchinTracker();
</script>
</body>
</html>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>GeekOnJava: Directions Complex</title>


<style>
html
{
   height:100%;
}
body
{
  height:100%;
  margin:0px;
  font-family: Helvetica,Arial;
}
</style>

【讨论】:

  • 请从这个链接添加一些sn-ps而不是发布它。
  • 我测试了它并为我工作!对那个发布链接感到抱歉,我不知道,因为我只是堆栈溢出中的新人,所以抱歉下次不会这样做
【解决方案3】:
<script type="text/javascript">

    var map;
    var geocoder;
    var marker;
    var people = new Array();
    var people2 = new Array();
    var latlng;
    var infowindow;
    var lats=6.9271;
     var markersz = new google.maps.Marker;
     var markers2 =  new google.maps.Marker;


    $(document).ready(function() {

        var mapOptions = {
            center: new google.maps.LatLng(7.8731, 80.7718),   // Coimbatore = (11.0168445, 76.9558321)
            zoom: 8,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);


        ViewCustInGoogleMap();
    });

    window.setInterval(function(){
       ViewCustInGoogleMap();
      }, 5000);

    function ViewCustInGoogleMap() {
        //deleting the previous set mark on the map
        markersz.setMap(null);
       markers2.setMap(null);

     lats = lats+0.01;

        // Get data from database. It should be like below format or you can alter it.

        var data = '[{ "DisplayText": "DULA TEST<br/><h1>HHH</h1><a href=https://www.google.lk?st=kk target=_blank>CLICK</a>", "ADDRESS": "Coimbatore-641042", "LatitudeLongitude": "'+lats+',79.8612", "MarkerId": "Customer"}]';
        people = JSON.parse(data); 
        for (var i = 0; i < people.length; i++) {
           markersz =  setMarker(people[i]);
        }
        //-----------------------------------------------------------------------------------------------------------------
       //getting lats and longs from the controller
         $.ajax({
        type: 'post',
        url: 'http://localhost/GPS/Login/latsAndLongs',
        data: "",
        dataType: 'json',
        success: function(response) {
            people2 = JSON.parse(response); 
            for (var i = 0; i < people2.length; i++) {
                //setting the current mark and returning the mark object so that it can be deleted in the next iteration
                markers2=setMarker2(people2[i]);
            }
        }
       });
        //var data2 = '[{ "DisplayText": "DULA TEST2", "ADDRESS": "Coimbatore-641042", "LatitudeLongitude": "6.5854,79.9607", "MarkerId": "Seller"}]';
        }

//--------------------------------------------- ------------------------------------

    function setMarker(people) { 
        geocoder = new google.maps.Geocoder();
        infowindow = new google.maps.InfoWindow();
        if ((people["LatitudeLongitude"] == null) || (people["LatitudeLongitude"] == 'null') || (people["LatitudeLongitude"] == '')) {
            geocoder.geocode({ 'address': people["Address"] }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    latlng = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng());
                    marker = new google.maps.Marker({
                        position: latlng,
                        map: map,
                        draggable: false,
                        html: people["DisplayText"],
                        icon: "https://cdn4.iconfinder.com/data/icons/iconsimple-places/512/pin_1-128.png"
                    });
                    //marker.setPosition(latlng);
                    //map.setCenter(latlng);
                    google.maps.event.addListener(marker, 'click', function(event) {
                        infowindow.setContent(this.html);
                        infowindow.setPosition(event.latLng);
                        infowindow.open(map, this);
                    });
                }
                else {
                    //alert(people["DisplayText"] + " -- " + people["Address"] + ". This address couldn't be found");
                }
            });
        }
        else {
            marker = new google.maps.Marker;
            var latlngStr = people["LatitudeLongitude"].split(",");
            var lat = parseFloat(latlngStr[0]);
            var lng = parseFloat(latlngStr[1]);
            latlng = new google.maps.LatLng(lat, lng);
            marker = new google.maps.Marker({
                position: latlng,
                map: map,
                draggable: false,               // cant drag it
                html: people["DisplayText"],    // Content display on marker click
                icon: "http://www.myiconfinder.com/uploads/iconsets/256-256-a5485b563efc4511e0cd8bd04ad0fe9e.png"       // Give ur own image
            });

            //marker.setMap(null);
            //marker.setPosition(latlng);
            //map.setCenter(latlng);
            google.maps.event.addListener(marker, 'click', function(event) {
                infowindow.setContent(this.html);
                infowindow.setPosition(event.latLng);
                infowindow.open(map, this);
            });
            return marker;
        }
    }
   //----------------------------- 
   function setMarker2(people) {
        geocoder = new google.maps.Geocoder();
        infowindow = new google.maps.InfoWindow();
        if ((people["LatitudeLongitude"] == null) || (people["LatitudeLongitude"] == 'null') || (people["LatitudeLongitude"] == '')) {
            geocoder.geocode({ 'address': people["Address"] }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    latlng = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng());
                    marker = new google.maps.Marker({
                        position: latlng,
                        map: map,
                        draggable: false,
                        html: people["DisplayText"],
                        icon: "https://cdn4.iconfinder.com/data/icons/iconsimple-places/512/pin_1-128.png"
                    });
                    //marker.setPosition(latlng);
                    //map.setCenter(latlng);
                    google.maps.event.addListener(marker, 'click', function(event) {
                        infowindow.setContent(this.html);
                        infowindow.setPosition(event.latLng);
                        infowindow.open(map, this);
                    });
                }
                else {
                    alert(people["DisplayText"] + " -- " + people["Address"] + ". This address couldn't be found");
                }
            });
        }
        else {
            var latlngStr = people["LatitudeLongitude"].split(",");
            var lat = parseFloat(latlngStr[0]);
            var lng = parseFloat(latlngStr[1]);
            latlng = new google.maps.LatLng(lat, lng);
            marker = new google.maps.Marker({
                position: latlng,
                map: map,
                draggable: false,               // cant drag it
                html: people["DisplayText"],    // Content display on marker click
                icon: "https://cdn4.iconfinder.com/data/icons/iconsimple-places/512/pin_1-128.png"       // Give ur own image
            });
            //marker.setPosition(latlng);
            //map.setCenter(latlng);
            google.maps.event.addListener(marker, 'click', function(event) {
                infowindow.setContent(this.html);
                infowindow.setPosition(event.latLng);
                infowindow.open(map, this);
            });
        }
        return marker;
    }

</script>

【讨论】:

    【解决方案4】:

    在迭代时移动标记列表并缩放特定标记。 1.获取Imei_no。 2.将imei_no推入变量中。 3. 创建地图。 4.根据imei_no获取详细信息。 5. 创建创客。 6.推动制造商在测试。 7. 删除标记。 8. 返回自动更新。

    Sureshchan 完成的实时跟踪...

         if (true) {              
    
                var listimei = [];
                $scope.listimei = [];
    
                $http.get('school/transport/scroute/viewIMEI?imeiNo=' + routeid).success(function(response) {
                    //1.
                    console.log(response);
                    if (response.viewRoute == 0) {
                        logger.logError("IMEI No. not available");
                        $state.go("app.school.scTransport.scVehicleTracking.list");
    
                    } else {
    
                        //brown
                        $scope.brown = response.viewRoute[0].emptveh;
    
                        //2.
                        for (var b = 0; b < response.viewRoute.length; b++) {
                            listimei.push(response.viewRoute[b].imeiNo);                        
                        }
    
    
                            //3.
                            var mapOptions = {
                                    center: new google.maps.LatLng(13.0037, 80.1476),
                                    zoom: 17,
                                    mapTypeId: google.maps.MapTypeId.ROADMAP
                                  };
    
                                  var map = new google.maps.Map(document.getElementById('viewallmap'), mapOptions);
    
                                  var infoWindow = new google.maps.InfoWindow;
                               var test = [];
                               var marker;
    
    
                            function autoUpdate() {                             
    
                               if (marker == null){
    
                                    $scope.locData = [];
                                    var y = 0;
                                    var g = 0;
                                    var r = 0;
                                    var n = 0;
    
    
    
                                        $http.get('school/transport/scroute/getListImei?imeiNo=' + listimei).success(function(response) {
                                            //4.
                                            console.log(response);
                                            $scope.assetloader = true;
                                            for(var l = 0;l<response.viewImeiList.length;l++){                                           
    
                                                //time
                                                var startTime = new Date();
                                                var endTime = new Date(response.viewImeiList[l].lastmove);
                                                var difference = startTime.getTime() - endTime.getTime();
                                                var resultInMinutes = difference / 60000;
                                                var result = Math.round(resultInMinutes);
    
                                                //for date                           
                                                var dateObj = new Date(response.viewImeiList[l].lastmove);
                                                var month1 = ("0" + (dateObj.getUTCMonth() + 1)).slice(-2);//months from 1-12
                                                var day1 =  ("0" + dateObj.getUTCDate()).slice(-2); 
                                                var year1 = dateObj.getUTCFullYear();
                                                var  testdate = year1 + "-" + month1 + "-" + day1;                                        
                                                var now = new Date();
                                                var day = ("0" + now.getDate()).slice(-2);
                                                var month = ("0" + (now.getMonth() + 1)).slice(-2);
                                                var today = now.getFullYear() + "-" + (month) + "-" + (day);
    
                                                if (response.viewImeiList[l].nosignal == 1) {
                                                    $scope.black = n + 1;
                                                    n++;
                                                }else if(testdate != today){
                                                    $scope.black = n + 1;
                                                    n++;
                                                    var title = '<b>Vehicle No : </b> ' + response.viewImeiList[l].vehname + '<br> <b>IMEI No : </b> ' + response.viewImeiList[l].imeiNo + '<br> <b>Reg No : </b> ' + response.viewImeiList[l].regno + '<br> <b> Speed : </b> ' + response.viewImeiList[l].speed + ' KMPH <br> <b> Over Speed Limit : </b> 50 KMPH <br> <b> Last Movement Detected Time : </b> ' + response.viewImeiList[l].lastmove + '<br>';
                                                    $scope.view = [];
                                                    $scope.view.push(response.viewImeiList[l].vehname, title,response.viewImeiList[l].latitude, response.viewImeiList[l].longitude, "000000","FFFFFF");
                                                    $scope.locData.push($scope.view);
                                                }                                             
                                                else if (response.viewImeiList[l].speed == 0) {
                                                    $scope.yellow = y + 1;
                                                    y++;
                                                    var title = '<b>Vehicle No : </b> ' + response.viewImeiList[l].vehname + '<br> <b>IMEI No : </b> ' + response.viewImeiList[l].imeiNo + '<br> <b>Reg No : </b> ' + response.viewImeiList[l].regno + '<br> <b> Speed : </b> ' + response.viewImeiList[l].speed + ' KMPH <br> <b> Over Speed Limit : </b> 50 KMPH <br> <b> Last Movement Detected Time : </b> ' + response.viewImeiList[l].lastmove + '<br>';
                                                    $scope.view = [];
                                                    $scope.view.push(response.viewImeiList[l].vehname, title,response.viewImeiList[l].latitude, response.viewImeiList[l].longitude, "e5ff00","000000");
                                                    $scope.locData.push($scope.view);
                                                } else if (response.viewImeiList[l].speed != 0 && result > 15) {
                                                    $scope.yellow = y + 1;
                                                    y++;
                                                    var title = '<b>Vehicle No : </b> ' + response.viewImeiList[l].vehname + '<br> <b>IMEI No : </b> ' + response.viewImeiList[l].imeiNo + '<br> <b>Reg No : </b> ' + response.viewImeiList[l].regno + '<br> <b> Speed : </b> ' + response.viewImeiList[l].speed + ' KMPH <br> <b> Over Speed Limit : </b> 50 KMPH <br> <b> Last Movement Detected Time : </b> ' + response.viewImeiList[l].lastmove + '<br>';
                                                    $scope.view = [];
                                                    $scope.view.push(response.viewImeiList[l].vehname, title, response.viewImeiList[l].latitude, response.viewImeiList[l].longitude, "e5ff00","000000");
                                                    $scope.locData.push($scope.view);
                                                } else if (response.viewImeiList[l].speed > 50 && result < 15) {
                                                    $scope.red = r + 1;
                                                    r++;
                                                    var title = '<b>Vehicle No : </b> ' + response.viewImeiList[l].vehname + '<br> <b>IMEI No : </b> ' + response.viewImeiList[l].imeiNo + '<br> <b>Reg No : </b> ' + response.viewImeiList[l].regno + '<br> <b> Speed : </b> ' + response.viewImeiList[l].speed + ' KMPH <br> <b> Over Speed Limit : </b> 50 KMPH <br> <b> Last Movement Detected Time : </b> ' + response.viewImeiList[l].lastmove + '<br>';
                                                    $scope.view = [];
                                                    $scope.view.push(response.viewImeiList[l].vehname, title, response.viewImeiList[l].latitude, response.viewImeiList[l].longitude, "FF0000","000000");
                                                    $scope.locData.push($scope.view);
                                                } else {
                                                    $scope.green = g + 1;
                                                    g++;
                                                    var title = '<b>Vehicle No : </b> ' + response.viewImeiList[l].vehname + '<br> <b>IMEI No : </b> ' + response.viewImeiList[l].imeiNo + '<br> <b>Reg No : </b> ' + response.viewImeiList[l].regno + '<br> <b> Speed : </b> ' + response.viewImeiList[l].speed + ' KMPH <br> <b> Over Speed Limit : </b> 50 KMPH <br> <b> Last Movement Detected Time : </b> ' + response.viewImeiList[l].lastmove + '<br>';
                                                    $scope.view = [];
                                                    $scope.view.push(response.viewImeiList[l].vehname, title, response.viewImeiList[l].latitude, response.viewImeiList[l].longitude, "00ff00","000000");
                                                    $scope.locData.push($scope.view);
                                                }
    
                                            }
    
                                                 var locations = $scope.locData;
    
                                                for (var i = 0; i < locations.length; i++) {
                                                        var city = locations[i][0];
                                                        var state = locations[i][1];
                                                        var lat = locations[i][2];
                                                        var lng = locations[i][3];
                                                        var desc = locations[i][4];
                                                        var textcol = locations[i][5];
                                                        var z = i;
                                                        var myLatLng = new google.maps.LatLng(lat, lng);
    
                                                        var content = '<div class="map-content"><h3>' + state +
                                                             '</h3></div>';
    
                                                        //5.
    
                                                        marker = new google.maps.Marker({
                                                            map: map,
                                                            title: state,
                                                            position: myLatLng,
                                                            icon : 'https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=' + city + '|' + desc + '|' +textcol,
                                                            draggable : true,
                                                            zIndex: z
                                                        });
    
                                                        //6.
                                                        test.push(marker);
    
                                                        //mouseover
                                                        google.maps.event.addListener(marker, 'click', (function(marker, content) {
                                                            return function() {
                                                                infoWindow.setContent(content);
                                                                infoWindow.open(map, marker);
                                                            }
                                                        })(marker, content));
    
                                                        // add the double-click event listener
                                                        google.maps.event.addListener(marker, 'dblclick', function(event){
                                                            map = marker.getMap();
    
                                                            map.setCenter(overlay.getPosition()); // set map center to marker position
                                                            smoothZoom(map, 12, map.getZoom()); // call smoothZoom, parameters map, final zoomLevel, and starting zoom level
                                                        })
    
    
                                                        // the smooth zoom function
                                                        function smoothZoom (map, max, cnt) {
                                                            if (cnt >= max) {
                                                                    return;
                                                                }
                                                            else {
                                                                y = google.maps.event.addListener(map, 'zoom_changed', function(event){
                                                                    google.maps.event.removeListener(y);
                                                                    self.smoothZoom(map, max, cnt + 1);
                                                                });
                                                                setTimeout(function(){map.setZoom(cnt)}, 80);
                                                            }
                                                        }
                                                }
                                        });               
                                        myVar = setTimeout(autoUpdate, 40000);
                                }
    
                                if(test.length !=0){
                                    //7.
                                    for (var k = 0; k < test.length; k++) {
                                        if (test[k].getMap() != null) {
                                            test[k].setMap(null);
                                        }                                           
    
                                      }
    
                                    test1();
    
                                }
    
                            }    
    
                            function test1(){
                               //8.
                                test = [];
                                marker = null;
                                autoUpdate();
    
                            }
    
    
                            autoUpdate();                    
    
    
    
                    }
    
                });
    
            }
    

    【讨论】:

      猜你喜欢
      • 2013-09-13
      • 2013-04-25
      • 2017-09-21
      • 2022-01-24
      • 1970-01-01
      • 2013-04-08
      • 2020-05-07
      • 1970-01-01
      • 2016-08-30
      相关资源
      最近更新 更多