Google Maps initialize()和新的JSON mapOptions赢得了';行不通

Google Maps initialize()和新的JSON mapOptions赢得了';行不通,json,google-maps,initialization,maps,Json,Google Maps,Initialization,Maps,这是标准的谷歌代码,它可以很好地加载地图 var mapOptions = { center: { lat: -34.397, lng: 150.644 }, zoom: 8 }; function initialize() { var map = new google.maps.Map(document.getElementById('map-canvas'),

这是标准的谷歌代码,它可以很好地加载地图

var mapOptions = {
            center: { lat: -34.397, lng: 150.644 },
            zoom: 8
        };

function initialize() {             
            var map = new google.maps.Map(document.getElementById('map-canvas'),
            mapOptions);
        }
        google.maps.event.addDomListener(window, 'load', initialize);
但是,在我搜索XML文件中的值并将它们设置为mapOptions之后,它就不会初始化了。我什么都试过了

$(xml).find("location").each(function(){ 

                    var lat = $(this).find("lat").text();
                    var lng = $(this).find("lng").text();

                    mapOptions.center.lat = lat;
                    mapOptions.center.lng = lng;

                    initialize();
            });
我甚至在initialize()中添加了警报,它们可以处理XML中的新坐标。为什么地图装载不是我能理解的

function initialize() {
            alert(mapOptions.center.lat);
            alert(mapOptions.center.lng);

            var map = new google.maps.Map(document.getElementById('map-canvas'),
            mapOptions);
        }
        google.maps.event.addDomListener(window, 'load', initialize);
解决方案:正如用户geocodezip所建议的,解决方案是在设置变量时使用parseFloat()

var lat = parseFloat($(this).find("lat").text());

我在属性lat:非数字中得到错误
Uncaught InvalidValueError:setCenter:非LatLng或LatLngLiteral:
。请注意,
zoom
也是必需的。这对我很有用:

$(xml).find("location").each(function () {

    var lat = parseFloat($(this).find("lat").text());
    var lng = parseFloat($(this).find("lng").text());

    mapOptions.center.lat = lat;
    mapOptions.center.lng = lng;

    initialize();
});

代码段:

var地理编码器;
var映射;
变量映射选项={
中心:{},
缩放:5
};
函数初始化(){
var map=new google.maps.map(document.getElementById('map-canvas'),
地图选项);
}
函数parseXml(str){
if(window.ActiveXObject){
var doc=新的ActiveXObject('MicrosoftXMLDOM');
doc.loadXML(str);
退货单;
}else if(window.DOMParser){
return(newdomparser()).parseFromString(str,'text/xml');
}
}
var xmlData=“45-72”;
var xml=parseXml(xmlData);
$(xml).find(“location”).each(函数(){
var lat=parseFloat($(this.find(“lat”).text());
var lng=parseFloat($(this.find(“lng”).text());
mapOptions.center.lat=lat;
mapOptions.center.lng=lng;
初始化();
});
html,
身体,
#地图画布{
高度:500px;
宽度:500px;
边际:0px;
填充:0px
}