猿问

谷歌地图从ajax成功返回数据的经度/纬度移动标记

尝试通过sql数据库中的经/纬度坐标间隔移动标记/地图。


function initialize() {

    var myLatLng = new google.maps.LatLng(41,14);


    var myOptions = {

        zoom: 16,

        center: myLatLng,

        scrollwheel: false,

        panControl: true,

        zoomControl: true,

        mapTypeControl: true,

        scaleControl: true,

        streetViewControl: true,

        overviewMapControl: true,

        mapTypeId: google.maps.MapTypeId.SATELLITE,

    }


    map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);


    marker = new google.maps.Marker({

        position: myLatLng,

        map: map,

        draggable: false

});


}

google.maps.event.addDomListener(window, 'load', initialize);


function getCoords() {


$.ajax({

url: "../ajaxscript.php",

type: "POST",

data: {

foo : "bar"

},

dataType: "text",

success: function(returnedData) {

      alert(returnedData);

    moveMarkerMap(returnedData);

}

});


}


function moveMarkerMap(newCoords) {

var newLatLang = new google.maps.LatLng(newCoords);

map.panTo(newLatLang);

marker.setPosition(newLatLang);


}

window.setInterval(getCoords, 5000);

在moveMarkerMap()中设置新的google.maps.LatLng(14,41)会移动它,并且returnData显示在alert()中,但与moveMarkerMap()一起使用时标记不会移动


从ajax返回的字符串格式正确;(9.624672,7.242244)如alert()所示,因此不确定为什么它不起作用。


开满天机
浏览 511回答 2
2回答

幕布斯7119047

google.maps.LatLng构造函数使用两个数字作为参数。这行不通:var newLatLang = new google.maps.LatLng(newCoords);您需要将newCoords转换为两个数字。

桃花长相依

如果其他人遇到此问题,请分割字符串:success:function(returnedData){// alert(returnedData); var coordsArray = returnData.split(“,”); moveMarkerMap(coordsArray [0],coordsArray [1]); } 
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答