在收到新信息时添加多个标记

时间:2013-05-28 09:57:35

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

新手在这里。 我正在制作一个在地图上显示车辆位置的程序。 #Google Maps API V3。 该程序将自动从sql server(live)接收经度,纬度,速度,日期等信息。我希望地图显示所有标记(长和拉可用),并在每次特定标记的位置改变时更新标记的位置。更新包括每个标记的信息窗口。我的问题是在启动程序时没有标记显示在地图上(lat& long received)。以下是代码:

    var map = null;
    var Table_Pins = {};     // Liste des Pins affichées
    var Pos_Info = null;     // Dit sur quel marker se situe l'infobulle
    var Liste_Points = []; // Pour la mémorisation du tracé
    var route = null;
    var markers = [];

    //-----------------------------------------------------------------
        function initialize() {
            var mapOptions = {
                zoom: 15,
                center: new google.maps.LatLng(43.665, 7.052),
                mapTypeId: google.maps.MapTypeId.ROADMAP, //Type de carte
                mapTypeControl: true,
                panControl: true,
                zoomControl: true, //Zoom
                scaleControl: true, //Echelle
                scaleControlOptions: {
                position: google.maps.ControlPosition.LEFT_BOTTOM},
                streetViewControl: true
                } ;
            var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
            Affiche_Pin(map, myPin);
            }
            //------------------------
            // Ouverture du WebBrowser
            // -----------------------
        try { google.maps.event.addDomListener(window, 'load', initialize);}
        catch (ex){ alert("vous devez etre connecte a l'internet...");}


    // ------------------------------------------------------------------------------------
    //                          Affichage des véhicules
    // ------------------------------------------------------------------------------------
    var myPin =[];
    function Affiche_Pin(Lat, Long, immat, type, site, vitesse, date)
    { 

       myPin = Table_Pins[immat];


    if (typeof myPin != "undefined") 
     {
     myPin.setPosition(new google.maps.LatLng(Lat, Long))
      // La Pin est déja placée, on la déplace
      // -------------------------------------
       map = new google.maps.Map(document.getElementById('map')); 
       map.setCenter(new google.maps.LatLng(Lat, Long));
       map.setZoom(15);
       map.setMapTypeId(google.maps.MapTypeId.ROADMAP);

       if (Pos_Info == myPin) {
       var infowindow = new google.maps.InfoWindow({
       content: myPin.html, 
       position: new google.maps.LatLng(Lat, Long) });
       infowindow.open(map);
       } //end if (pos_info)
     }//end if (mypin)

     else{

     var imageMarqueur = new google.maps.MarkerImage('http://maps.google.com/mapfiles/kml/pal4/icon15.png',
          new google.maps.Size(32, 32),
          new google.maps.Point(0,0),
          new google.maps.Point(16, 32));
     var ombreMarqueur = new google.maps.MarkerImage('http://maps.google.com/mapfiles/kml/pal4/icon15s.png',
          new google.maps.Size(56, 32),
          new google.maps.Point(0,0),
          new google.maps.Point(16, 32));

     var vehlatlng = new google.maps.LatLng(Lat, Long) ;
     var marker = new google.maps.Marker({
     map: map,
     position: vehlatlng,
     icon: imageMarqueur,
     shadow: ombreMarqueur       });

     var infowindow = new google.maps.InfoWindow({
     content: 'Véhicule :' + immat + ' ' + '<br>' +
            'Site : ' + site + '<br>' +
            'Type : ' + type + '<br>' +
            'Vitesse : ' + vitesse + ' km/h' + '<br>' +
            'Date : ' + date + '<br>',  
     position: vehlatlng });
      }//end else

     // Evenement "Click" et "infowindowopen" du marker
     // ---------------------------
      google.maps.event.addListener(marker, 'click', function() {
          if(lastOpenInfoWin) lastOpenInfoWin.close();
          lastOpenInfoWin = infowindow;
          infowindow.open(marker.get('map'), marker); 
          Pos_Info = marker;});

    Table_Pins[immat] = marker;

      markers.push(marker);
     marker.setMap(map);


  }//end function affiche_pin

“immat”是车辆的id, “vitesse”就是速度。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

它只是一个全局和局部方差的问题。当已经在全局中定义var map = null时,避免在函数中定义var map。只有&#34; map&#34;足够没有&#34; var&#34;在一个函数中。