Google maps 谷歌地图API设置位置错误
我正在使用谷歌地图API v3。我的脚本工作正常,只要 标记未定义。但是当我在数据库中更新long-lat并且ajax函数通过json返回一个新的long-lat时,Google maps 谷歌地图API设置位置错误,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,我正在使用谷歌地图API v3。我的脚本工作正常,只要 标记未定义。但是当我在数据库中更新long-lat并且ajax函数通过json返回一个新的long-lat时,marker.setPosition(newLatLng)会使标记消失 请帮帮我,有什么问题吗?这是我的密码: $(document).ready(function () { var map; var marker; function initialize() { var myLatlng
marker.setPosition(newLatLng)
会使标记消失
请帮帮我,有什么问题吗?这是我的密码:
$(document).ready(function () {
var map;
var marker;
function initialize() {
var myLatlng = new google.maps.LatLng(<?php echo $c_lat; ?>, <?php echo $c_long; ?>);
var myOptions = {
zoom: 19,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('driver_loc'), myOptions);
}
function getLongLat(){
$.ajax({
type: "POST",
url: "config/getLongLat.php?id=<?php echo $driverId; ?>",
dataType: "json",
success: function(data)
{
var lat=data.lat; //returns new lat via db
var lon=data.lon;
// alert(lat);
var newLatLng = new google.maps.LatLng(lat, lon);
if (marker != undefined)
marker.setPosition(newLatLng);
else
marker = new google.maps.Marker({
position: newLatLng,
map: map,
icon: 'images/car.png',
animation: google.maps.Animation.DROP,
draggable: true
});
}
});
console.log(marker);
}
// Onload handler to fire off the app.
google.maps.event.addDomListener(window, 'load', initialize);
// google.maps.event.addDomListener(window, 'load', callPosition);
window.setInterval(function(){
getLongLat();
}, 6326);
});
$(文档).ready(函数(){
var映射;
var标记;
函数初始化(){
var mylatng=newgoogle.maps.LatLng(,);
变量myOptions={
缩放:19,
中心:myLatlng,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById('driver_loc'),myOptions);
}
函数getLongLat(){
$.ajax({
类型:“POST”,
url:“config/getLongLat.php?id=”,
数据类型:“json”,
成功:功能(数据)
{
var lat=data.lat;//通过数据库返回新的lat
var lon=data.lon;
//警报(lat);
var newLatLng=newgoogle.maps.LatLng(lat,lon);
如果(标记!=未定义)
标记器。设置位置(新LATLNG);
其他的
marker=新的google.maps.marker({
职位:newLatLng,
地图:地图,
图标:“images/car.png”,
动画:google.maps.animation.DROP,
德拉格布尔:是的
});
}
});
控制台日志(标记器);
}
//用于启动应用程序的Onload处理程序。
google.maps.event.addDomListener(窗口“加载”,初始化);
//google.maps.event.addDomListener(窗口'load',callPosition);
setInterval(函数(){
getLongLat();
}, 6326);
});
一个好的实践是对json数据使用parseFloat方法。新位置可以位于当前视口之外。要处理它,只需使用map.setCenter([new_position])方法。您还可以使用map.setZoom([zoom_level])更改缩放级别。
就你而言:
$(document).ready(function () {
var map;
var marker;
function initialize() {
var myLatlng = new google.maps.LatLng(<?php echo $c_lat; ?>, <?php echo $c_long; ?>);
var myOptions = {
zoom: 19,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('driver_loc'), myOptions);
}
function getLongLat(){
$.ajax({ type: "POST", url: "config/getLongLat.php?id=<?php echo $driverId; ?>", dataType: "json",
success: function(data){
var lat=parseFloat(data.lat); //returns new lat via db
var lon=parseFloat(data.lon);
var newLatLng = new google.maps.LatLng(lat, lon);
if (marker != undefined){
marker.setPosition(newLatLng);
} else {
marker = new google.maps.Marker({
position: newLatLng,
map: map,
icon: 'images/car.png',
animation: google.maps.Animation.DROP,
draggable: true
});
}
//Center map on a new position
map.setCenter(newLatLng);
//Change zoom level
//map.setZoom(19);
}
});
}
// Onload handler to fire off the app.
google.maps.event.addDomListener(window, 'load', initialize);
// google.maps.event.addDomListener(window, 'load', callPosition);
window.setInterval(function(){
getLongLat();
}, 6326);
});
$(文档).ready(函数(){
var映射;
var标记;
函数初始化(){
var mylatng=newgoogle.maps.LatLng(,);
变量myOptions={
缩放:19,
中心:myLatlng,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById('driver_loc'),myOptions);
}
函数getLongLat(){
$.ajax({type:“POST”,url:“config/getLongLat.php?id=”,数据类型:“json”,
成功:函数(数据){
var lat=parseFloat(data.lat);//通过db返回新的lat
var lon=parseFloat(data.lon);
var newLatLng=newgoogle.maps.LatLng(lat,lon);
如果(标记!=未定义){
标记器。设置位置(新LATLNG);
}否则{
marker=新的google.maps.marker({
职位:newLatLng,
地图:地图,
图标:“images/car.png”,
动画:google.maps.animation.DROP,
德拉格布尔:是的
});
}
//将地图居中放置在新位置
地图设置中心(newLatLng);
//更改缩放级别
//map.setZoom(19);
}
});
}
//用于启动应用程序的Onload处理程序。
google.maps.event.addDomListener(窗口“加载”,初始化);
//google.maps.event.addDomListener(窗口'load',callPosition);
setInterval(函数(){
getLongLat();
}, 6326);
});
你确定标记消失了吗,也许他在更新后被放在了视口外。ooo yeah u r right它会在5秒内移动,因为lat变化太大,请告诉我如何更改视口,因为我想显示更新markerI使用了var lat=parseFloat(data.lat)//通过db var lon=parseFloat(data.lon)返回新的lat;但同样的问题是,当新的长lat来自db时,标记消失了……也许,您的情况可以通过使用新位置更新视图端口来解决。我已经更新了上面的代码。