Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在收到新信息时添加多个标记_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

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

Javascript 在收到新信息时添加多个标记,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我是新手。 我正在开发一个程序,在地图上显示车辆的位置#谷歌地图API V3。 程序将自动从sql server(live)接收经度、纬度、速度、日期等信息。我希望地图显示所有标记(可用的long和lat),并在特定标记的位置每次更改时更新标记的位置。更新包括每个标记的信息窗口。我的问题是启动程序时地图上没有显示标记(lat和long接收)。代码如下: var map = null; var Table_Pins = {}; // Liste des Pins affic

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

    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
var-map=null;
变量表_Pins={};//别针粘贴列表
var Pos_Info=null;//在信息布尔的东南部标记上
var Liste_Points=[];//倒酒
var-route=null;
var标记=[];
//-----------------------------------------------------------------
函数初始化(){
变量映射选项={
缩放:15,
中心:新google.maps.LatLng(43.665,7.052),
mapTypeId:google.maps.mapTypeId.ROADMAP,//键入点菜
mapTypeControl:true,
泛控制:对,
zoomControl:true,//缩放
scaleControl:true,//Echelle
规模控制:{
位置:google.maps.ControlPosition.LEFT_BOTTOM},
街景控制:正确
} ;
var map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
阿菲什·佩恩(地图,我的佩恩);
}
//------------------------
//韦伯酒店
// -----------------------
请尝试{google.maps.event.addDomListener(窗口'load',initialize);}
捕获(例如){alert(“你要连接互联网…”);}
// ------------------------------------------------------------------------------------
//véhicules附加条款
// ------------------------------------------------------------------------------------
var myPin=[];
功能固定销(横向、纵向、纵向、横向、类型、位置、方向、日期)
{ 
myPin=表_Pins[immat];
if(myPin的类型!=“未定义”)
{
myPin.setPosition(新的google.maps.LatLng(Lat,Long))
//La Pin est déja placée,在La déplace
// -------------------------------------
map=newgoogle.maps.map(document.getElementById('map');
setCenter(新的google.maps.LatLng(Lat,Long));
map.setZoom(15);
setMapTypeId(google.maps.MapTypeId.ROADMAP);
如果(Pos_Info==myPin){
var infowindow=new google.maps.infowindow({
内容:myPin.html,
位置:新google.maps.LatLng(Lat,Long)};
打开(地图);
}//如果结束(位置信息)
}//如果结束(mypin)
否则{
var imagemarkur=new google.maps.MarkerImage('http://maps.google.com/mapfiles/kml/pal4/icon15.png',
新google.maps.Size(32,32),
新google.maps.Point(0,0),
新的google.maps.Point(16,32));
var ombremarkur=new google.maps.MarkerImage('http://maps.google.com/mapfiles/kml/pal4/icon15s.png',
新谷歌地图大小(56,32),
新google.maps.Point(0,0),
新的google.maps.Point(16,32));
var vehlatlng=新的google.maps.LatLng(Lat,Long);
var marker=new google.maps.marker({
地图:地图,
职位:Vehlatling,
图标:ImageMarquer,
阴影:OmbreMarquer});
var infowindow=new google.maps.infowindow({
内容:“Véhicule:”+immat+“+”
'+ '站点:'+Site+'
'+ '类型:'+Type+'
'+ “Vitesse:'+Vitesse+'km/h'+'
'+ '日期:'+Date+'
', 位置:Vehlatling}); }//结束其他 //晚上“点击”et“信息窗口打开”du标记 // --------------------------- google.maps.event.addListener(标记'click',函数(){ if(lastOpenInfoWin)lastOpenInfoWin.close(); lastOpenInfoWin=infowindow; 打开(marker.get('map'),marker); Pos_Info=marker;}); 表_引脚[immat]=标记; 标记器。推(标记器); marker.setMap(map); }//端功能固定销
“immat”是车辆的id, “vitesse”是速度。
提前感谢。

这只是全局和局部方差的问题。当全局中已定义var map=null时,请避免在函数中定义var map。函数中没有“var”,只有“map”就足够了。

它的可能副本很快相似,但不相同。我不使用php。相反,地图是在VB程序中打开的,该程序在打开程序时自动连接到服务器。我试着按照那个建议的指导去做,但还是找不到我缺少的东西。任何人请帮忙!!!重复的如果这是您正在使用的实际函数,则它有一些语法错误。位置:vehlatlng}),位置:new google.maps.LatLng(Lat,Long)};我不知道你为什么有两个位置。很抱歉,我改正了,但仍然不工作。更具体地说,我有来自sql server的数据流,在这里我需要在单击时显示每个位置的标记及其信息窗口。每次接收到新数据时,都会显示新标记及其信息窗口。