Javascript:Google地图每x秒设置一次标记经纬度?

Javascript:Google地图每x秒设置一次标记经纬度?,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,我正在尝试学习如何每x秒在谷歌地图上移动一个标记(当然不刷新地图或页面) 我遇到了很多关于STO的代码、教程和关于移动或更新标记的问题,但他们都希望通过AJAX来实现 我不想通过AJAX来实现 基本上,标记的lat/long存储在localstorage()中 因此,为了每x秒移动一次标记,我只需要查看本地存储,而不是调用AJAX等等 本地存储看起来像这样: var lat = localStorage.getItem("mylat"); var lng = localStorage.getIt

我正在尝试学习如何每x秒在谷歌地图上移动一个标记(当然不刷新地图或页面)

我遇到了很多关于STO的代码、教程和关于移动或更新标记的问题,但他们都希望通过AJAX来实现

我不想通过AJAX来实现

基本上,标记的
lat/long
存储在
localstorage()中

因此,为了每x秒移动一次标记,我只需要查看本地存储,而不是调用AJAX等等

本地存储看起来像这样:

var lat = localStorage.getItem("mylat");
var lng = localStorage.getItem("mylng");
它们的值只是简单的字符串,如下所示:

51.54647477
0.123383777
所以,如果我在本地更改这些值中的任何一个(没有AJAX),我需要标记来移动或更新它的位置

首先,这可能吗

也许可以使用
SETINTERVAL()

如果是这样的话,请有人就此提出建议或给我指出正确的方向

任何帮助都将不胜感激

编辑:

我想我有进展了。问题是标记会被删除:

这是一个

如果我在代码中直接使用lat/long值,则标记不会在移动中消失,但当我使用输入值或localstorage值时,标记会消失

有效:

var NewLatLng = new google.maps.LatLng(20.371237, 72.90634);
var NewLatLng = new google.maps.LatLng(input);
$(document).ready(function () {





    var map;


         function initialize()
         {


           var latlng = new google.maps.LatLng(21.16536,72.79387);



           var myOptions = {
               zoom: 5,
               center: latlng,
               mapTypeId: google.maps.MapTypeId.ROADMAP
           };


           map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
           var marker = new google.maps.Marker
           (
               {
                   position: new google.maps.LatLng(21.1673643, 72.7851802),
                   map: map,
                   title: 'Click me'
               }

           );




           var infowindow = new google.maps.InfoWindow({
               content: 'Location info:<br/>SVNIT Post Office, Dumas Rd, Surat<br/>LatLng:<br/>21.1673643, 72.7851802'
           });
           google.maps.event.addListener(marker, 'click', function ()
           {
              infowindow.open(map, marker);
              setTimeout(function(){infowindow.close();}, '5000');
           });

       //$('#clickme').on('click', function(){
       setInterval(function() {
           var input = $('#input').val();
           var input2 = $('#input2').val();


            var NewLatLng = new google.maps.LatLng(input, input2);
            //setInterval(function() { marker.setPosition(NewLatLng);}, 2000);
            marker.setPosition( NewLatLng );
    });   


       }





       window.onload = initialize;



    });
不起作用:

var NewLatLng = new google.maps.LatLng(20.371237, 72.90634);
var NewLatLng = new google.maps.LatLng(input);
$(document).ready(function () {





    var map;


         function initialize()
         {


           var latlng = new google.maps.LatLng(21.16536,72.79387);



           var myOptions = {
               zoom: 5,
               center: latlng,
               mapTypeId: google.maps.MapTypeId.ROADMAP
           };


           map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
           var marker = new google.maps.Marker
           (
               {
                   position: new google.maps.LatLng(21.1673643, 72.7851802),
                   map: map,
                   title: 'Click me'
               }

           );




           var infowindow = new google.maps.InfoWindow({
               content: 'Location info:<br/>SVNIT Post Office, Dumas Rd, Surat<br/>LatLng:<br/>21.1673643, 72.7851802'
           });
           google.maps.event.addListener(marker, 'click', function ()
           {
              infowindow.open(map, marker);
              setTimeout(function(){infowindow.close();}, '5000');
           });

       //$('#clickme').on('click', function(){
       setInterval(function() {
           var input = $('#input').val();
           var input2 = $('#input2').val();


            var NewLatLng = new google.maps.LatLng(input, input2);
            //setInterval(function() { marker.setPosition(NewLatLng);}, 2000);
            marker.setPosition( NewLatLng );
    });   


       }





       window.onload = initialize;



    });
另一次编辑:

var NewLatLng = new google.maps.LatLng(20.371237, 72.90634);
var NewLatLng = new google.maps.LatLng(input);
$(document).ready(function () {





    var map;


         function initialize()
         {


           var latlng = new google.maps.LatLng(21.16536,72.79387);



           var myOptions = {
               zoom: 5,
               center: latlng,
               mapTypeId: google.maps.MapTypeId.ROADMAP
           };


           map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
           var marker = new google.maps.Marker
           (
               {
                   position: new google.maps.LatLng(21.1673643, 72.7851802),
                   map: map,
                   title: 'Click me'
               }

           );




           var infowindow = new google.maps.InfoWindow({
               content: 'Location info:<br/>SVNIT Post Office, Dumas Rd, Surat<br/>LatLng:<br/>21.1673643, 72.7851802'
           });
           google.maps.event.addListener(marker, 'click', function ()
           {
              infowindow.open(map, marker);
              setTimeout(function(){infowindow.close();}, '5000');
           });

       //$('#clickme').on('click', function(){
       setInterval(function() {
           var input = $('#input').val();
           var input2 = $('#input2').val();


            var NewLatLng = new google.maps.LatLng(input, input2);
            //setInterval(function() { marker.setPosition(NewLatLng);}, 2000);
            marker.setPosition( NewLatLng );
    });   


       }





       window.onload = initialize;



    });
现在可以这样做,但它只移动标记一次,如果我编辑输入值,它不会再次移动标记:

现在可以正常工作了:

var NewLatLng = new google.maps.LatLng(20.371237, 72.90634);
var NewLatLng = new google.maps.LatLng(input);
$(document).ready(function () {





    var map;


         function initialize()
         {


           var latlng = new google.maps.LatLng(21.16536,72.79387);



           var myOptions = {
               zoom: 5,
               center: latlng,
               mapTypeId: google.maps.MapTypeId.ROADMAP
           };


           map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
           var marker = new google.maps.Marker
           (
               {
                   position: new google.maps.LatLng(21.1673643, 72.7851802),
                   map: map,
                   title: 'Click me'
               }

           );




           var infowindow = new google.maps.InfoWindow({
               content: 'Location info:<br/>SVNIT Post Office, Dumas Rd, Surat<br/>LatLng:<br/>21.1673643, 72.7851802'
           });
           google.maps.event.addListener(marker, 'click', function ()
           {
              infowindow.open(map, marker);
              setTimeout(function(){infowindow.close();}, '5000');
           });

       //$('#clickme').on('click', function(){
       setInterval(function() {
           var input = $('#input').val();
           var input2 = $('#input2').val();


            var NewLatLng = new google.maps.LatLng(input, input2);
            //setInterval(function() { marker.setPosition(NewLatLng);}, 2000);
            marker.setPosition( NewLatLng );
    });   


       }





       window.onload = initialize;



    });
$(文档).ready(函数(){
var映射;
函数初始化()
{
var latlng=新的google.maps.latlng(21.16536,72.79387);
变量myOptions={
缩放:5,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
var marker=new google.maps.marker
(
{
位置:新google.maps.LatLng(21.1673643,72.7851802),
地图:地图,
标题:“点击我”
}
);
var infowindow=new google.maps.infowindow({
内容:“地址信息:
苏拉特杜马斯路斯维尼特邮政局
拉廷:
21.1673643,72.7851802” }); google.maps.event.addListener(标记,'click',函数() { 信息窗口。打开(地图、标记); setTimeout(函数(){infowindow.close();},'5000'); }); //$('clickme')。在('click',function()上{ setInterval(函数(){ var input=$('#input').val(); var input2=$('#input2').val(); var NewLatLng=newgoogle.maps.LatLng(输入,输入2); //setInterval(function(){marker.setPosition(NewLatLng);},2000); 标记器。设置位置(新LATLNG); }); } window.onload=初始化; });
一个选项是使用
setInterval
定期读取
localStorage
并设置标记位置(如果不存在标记,则创建标记)

代码片段:

var NewLatLng = new google.maps.LatLng(20.371237, 72.90634);
var NewLatLng = new google.maps.LatLng(input);
$(document).ready(function () {





    var map;


         function initialize()
         {


           var latlng = new google.maps.LatLng(21.16536,72.79387);



           var myOptions = {
               zoom: 5,
               center: latlng,
               mapTypeId: google.maps.MapTypeId.ROADMAP
           };


           map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
           var marker = new google.maps.Marker
           (
               {
                   position: new google.maps.LatLng(21.1673643, 72.7851802),
                   map: map,
                   title: 'Click me'
               }

           );




           var infowindow = new google.maps.InfoWindow({
               content: 'Location info:<br/>SVNIT Post Office, Dumas Rd, Surat<br/>LatLng:<br/>21.1673643, 72.7851802'
           });
           google.maps.event.addListener(marker, 'click', function ()
           {
              infowindow.open(map, marker);
              setTimeout(function(){infowindow.close();}, '5000');
           });

       //$('#clickme').on('click', function(){
       setInterval(function() {
           var input = $('#input').val();
           var input2 = $('#input2').val();


            var NewLatLng = new google.maps.LatLng(input, input2);
            //setInterval(function() { marker.setPosition(NewLatLng);}, 2000);
            marker.setPosition( NewLatLng );
    });   


       }





       window.onload = initialize;



    });
var映射;
var标记;
函数初始化(){
map=新建google.maps.map(
document.getElementById(“地图画布”){
中心:新google.maps.LatLng(37.4419,-122.1419),
缩放:13,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
}
函数setLocalStorage(){
var lat=document.getElementById('lat').value;
var lng=document.getElementById('lng')。值;
setItem('mylat',lat);
localStorage.setItem('mylng',lng);
}
setInterval(函数(){
var lat=parseFloat(localStorage.getItem(“mylat”);
var lng=parseFloat(localStorage.getItem(“mylng”);
潘托地图({
拉特:拉特,
液化天然气:液化天然气
});
如果(!marker | |!marker.setPosition){
marker=新的google.maps.marker({
职位:{
拉特:拉特,
液化天然气:液化天然气
},
地图:地图
});
}否则{
标记设置位置({
拉特:拉特,
液化天然气:液化天然气
});
}
}, 5000);
google.maps.event.addDomListener(窗口“加载”,初始化);
html,
身体
#地图画布{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}


你必须一次又一次地触发谷歌地图@Dherya,我应该在那里检查什么?是的,这是可能的。请提供一个例子,说明你尝试了哪些不起作用的地方。@geocodezip,请查看我问题中的编辑。我添加了一个提琴。我只希望你不要再对我的问题投票了,尽管哈哈。。。