Javascript 如何在x秒后显示google地图标记而不刷新google地图?
如何在没有谷歌地图刷新的情况下每x秒显示一次谷歌地图 1.标记latLong来自数据库 2.在谷歌地图上分配该标记 3.标记的latLong在30秒后发生变化 问题是谷歌地图被刷新了。所有我想要的谷歌地图应该显示不刷新与更新LatLong 这是我的密码Javascript 如何在x秒后显示google地图标记而不刷新google地图?,javascript,php,google-maps-api-3,Javascript,Php,Google Maps Api 3,如何在没有谷歌地图刷新的情况下每x秒显示一次谷歌地图 1.标记latLong来自数据库 2.在谷歌地图上分配该标记 3.标记的latLong在30秒后发生变化 问题是谷歌地图被刷新了。所有我想要的谷歌地图应该显示不刷新与更新LatLong 这是我的密码 <script> function initMap() { var infowindow = new google.maps.InfoWindow(); var map = new googl
<script>
function initMap() {
var infowindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: {lat: 19.9518684, lng: 73.7354084}
});
var image = '<?php echo $getImagePath; ?>'
for (var o in markers) {
lat = markers[ o ].lat;
lng = markers[ o ].lng;
address = markers[ o ].address;
var my = new google.maps.LatLng(lat, lng);
//console.log(my);
var marker = new google.maps.Marker({
position: my,
map: map,
icon: image,
});
google.maps.event.addListener(marker, 'click', function () {
infowindow.setContent("'" + address + "'");
infowindow.open(map, marker);
});
}
}
</script>
函数initMap(){
var infowindow=new google.maps.infowindow();
var map=new google.maps.map(document.getElementById('map'){
缩放:12,
中心:{纬度:19.9518684,液化天然气:73.7354084}
});
变量图像=“”
for(标记中的var o){
lat=标记[o]。lat;
液化天然气=标记物[o]。液化天然气;
地址=标记[o]。地址;
var my=new google.maps.LatLng(lat,lng);
//console.log(我的);
var marker=new google.maps.marker({
职位:我的,
地图:地图,
图标:图像,
});
google.maps.event.addListener(标记,'click',函数(){
infowindow.setContent(“'”+地址+“”);
信息窗口。打开(地图、标记);
});
}
}
我尝试了google.maps.event.addDomListener(窗口,“加载”,initMap)
和window.onload=initMap代码>但不起作用
有人能帮我吗?我希望这段代码的小小重写能帮助你走上正轨。就目前而言,问题中有很多信息不存在,所以我只能猜测
// note these are globals because they are set in initMap and used outside of it
var image = '<?php echo $getImagePath; ?>';
var map;
var infowindow;
var markers = [/* some initially loaded markers loaded as if by majick unicorn farts */];
function initMap() {
infowindow = new google.maps.InfoWindow();
map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: {lat: 19.9518684, lng: 73.7354084}
});
doMarkers(true);
}
function doMarkers(firstLoad) {
markers.forEach(marker => {
var lat = marker.lat;
var lng = marker.lng;
marker.my = new google.maps.LatLng(lat, lng);
if (firstLoad) { // marker has no marker the first time because it's not on a map yet
marker.marker = new google.maps.Marker({
position: marker.my,
map: map,
icon: image,
});
google.maps.event.addListener(marker.marker, 'click', function () {
infowindow.setContent("'" + marker.address + "'");
infowindow.open(map, marker.marker);
});
} else { // move existing marker
marker.marker.setPosition(marker.my);
}
}
}
function magicallyFindAndUpdateMarkerDataUsingUnicornFarts(marker) {
// find corresponding marker in markers array
// update lat, lng and address
}
function doSomeAjaxToGetNewMarkerPositionsAndCallCallback(cb) {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'someURI');
xhr.onload = function() {
var data = JSON.parse(xhr.responseText);
data.forEach(function(marker) {
magicallyFindAndUpdateMarkerDataUsingUnicornFarts(marker);
});
cb()
}
xhr.send();
}
setInterval(function () {
doSomeAjaxToGetNewMarkerPositionsAndCallCallback(function() {
doMarkers(false);
});
}, 30000);
//注意,这些是全局变量,因为它们在initMap中设置,并在initMap之外使用
var图像=“”;
var映射;
var信息窗口;
var markers=[/*一些最初加载的标记好像是由majick unicorn farts加载的*/];
函数initMap(){
infowindow=new google.maps.infowindow();
map=new google.maps.map(document.getElementById('map'){
缩放:12,
中心:{纬度:19.9518684,液化天然气:73.7354084}
});
多马克(真);
}
函数域标记器(首次加载){
markers.forEach(marker=>{
var-lat=marker.lat;
var lng=marker.lng;
marker.my=new google.maps.LatLng(lat,lng);
如果(firstLoad){//标记第一次没有标记,因为它还不在地图上
marker.marker=新的google.maps.marker({
位置:marker.my,
地图:地图,
图标:图像,
});
google.maps.event.addListener(marker.marker,'click',函数(){
infowindow.setContent(“”+marker.address+“”);
infowindow.open(map,marker.marker);
});
}else{//移动现有标记
marker.marker.setPosition(marker.my);
}
}
}
函数magicallyFindAndUpdateMarkerDataUsingUnicornFarts(标记器){
//在标记数组中查找相应的标记
//更新lat、lng和地址
}
函数doSomeAjaxToGetNewMarkerPositionsAndCallCallback(cb){
var xhr=new XMLHttpRequest();
open('GET','someURI');
xhr.onload=函数(){
var data=JSON.parse(xhr.responseText);
data.forEach(函数(标记器){
MagicallyFind和UpdateMarkerDataUsingUncorfarts(标记器);
});
cb()
}
xhr.send();
}
setInterval(函数(){
doSomeAjaxToGetNewMarkerPositionsAndCallCallback(函数(){
doMarkers(假);
});
}, 30000);
当然,我看不到标记是如何加载的(在代码中的markers
),也不能告诉你dosomeajaxtogetnewmarkerpositionsandcallback
或magicallyfindanddupdatemarkerdatausingunicorfarts
应该是什么,因为你根本没有显示任何关于标记的代码(标记中的var o){
在函数initMap()中{
markers是一个数组,所以我必须这样做。老实说,我看不出你的代码中的标记是如何更新的,更不用说每30秒更新一次了。我的意思是,不要在initMap中这样做,一点也不要这样做。你能展示一下你现在如何处理标记位置的更改吗?谢谢你的帮助。让我试试这个。