Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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 如何在x秒后显示google地图标记而不刷新google地图?_Javascript_Php_Google Maps Api 3 - Fatal编程技术网

Javascript 如何在x秒后显示google地图标记而不刷新google地图?

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

如何在没有谷歌地图刷新的情况下每x秒显示一次谷歌地图

1.标记latLong来自数据库

2.在谷歌地图上分配该标记

3.标记的latLong在30秒后发生变化

问题是谷歌地图被刷新了。所有我想要的谷歌地图应该显示不刷新与更新LatLong

这是我的密码

<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中这样做,一点也不要这样做。你能展示一下你现在如何处理标记位置的更改吗?谢谢你的帮助。让我试试这个。