Javascript:Google地图每x秒设置一次标记经纬度?
我正在尝试学习如何每x秒在谷歌地图上移动一个标记(当然不刷新地图或页面) 我遇到了很多关于STO的代码、教程和关于移动或更新标记的问题,但他们都希望通过AJAX来实现 我不想通过AJAX来实现 基本上,标记的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
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,请查看我问题中的编辑。我添加了一个提琴。我只希望你不要再对我的问题投票了,尽管哈哈。。。