在接收到新信息时添加多个标记
Adding Multiple markers upon receiving new information
新来的。我在做一个能在地图上显示车辆位置的程序。#谷歌地图API V3。该程序将自动接收信息,如经度,纬度,速度,日期等从sql server (live)。我希望地图显示所有的标记(长&并在每次特定标记的位置发生变化时更新标记的位置。更新包括每个标记的信息窗口。我的问题是没有标记显示在地图上启动程序(晚&长了)。代码如下:
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的意思是速度。
这只是一个全局和局部差异的问题。避免在函数中定义var map,而在global中已经定义了var map = null。函数中只有"map"就足够了,不需要"var"。
相关文章:
- 将文本框/单选按钮/和下拉列表中的信息添加到dataTable
- 谷歌地图/SQL-添加链接到信息面板中的字段
- 添加标记和点击功能以显示信息窗口
- 如何从帖子对象添加其他信息以在护照中注册用户
- 谷歌地图:将带有信息框的多个标记添加到自定义地图
- 需要帮助添加弹出信息窗口到传单地图上的多边形
- 向HTML页面添加按钮,更新表格信息
- jQuery在单击当前元素时添加信息
- HTML5,CSS3,PHP联系人表单不发送信息+添加必填字段
- 谷歌地图在点击地图时添加信息窗口
- 为多个圆叠加添加信息窗口
- 在点击谷歌地图标记时添加信息窗口气泡
- 我不能添加信息到我的表在mysql.我使用javascript来显示信息消息,然后它不做任何事情
- 如何向多个标记添加信息窗口和工具提示?
- 使用Geojson添加信息窗口和自定义图标到谷歌地图
- 点击谷歌地图API标记,打开新窗口并添加信息
- 向谷歌方向添加信息框
- 为placemark添加信息窗口
- 当使用 JavaScript 动态添加数据库时,如何使用 PHP 向数据库添加信息
- 添加信息窗口自定义谷歌街景