动态创建Google Maps LatLng类

时间:2014-12-05 01:40:58

标签: javascript google-maps google-maps-api-3

我正在尝试使用谷歌自己的API在谷歌地图上创建标记。我的问题是我正在从文本文件中读取JSON数据,然后尝试将其分解为纬度和经度,以便我可以在地图上放置标记。你可以在下面看到我的代码。

var oReq = new XMLHttpRequest(); //New request object
oReq.onload = function() {
//This is where you handle what to do with the response.
//The actual data is found on this.responseText
//alert(this.responseText); //Will alert: the location latitude and longitude in JSON

locations = JSON.parse(this.responseText);
//alert(locations);
for(var i = 0; i < locations.length; i++ ){
    var tempLocation = locations[i];
    //alert(tempLocation);

    var tempLat = tempLocation.latitude;
    var tempLong = tempLocation.longitude;
    tempLat = tempLat.toString();
    tempLong = tempLong.toString();

    pictureLocations[i] = new google.maps.LatLng(tempLat + ", " + tempLong);  
}
    var tempPictureLocation = pictureLocations.toString();
    alert(tempPictureLocation);

};

我的问题是变量pictureLocations返回NaN。我相信他们的构造陈述是错的,但不确定究竟出了什么问题。如果我在某些坐标中进行硬编码,它也不起作用。谢谢您的帮助!

3 个答案:

答案 0 :(得分:2)

google.maps.LatLng object两个数字作为参数。这是不正确的:

pictureLocations[i] = new google.maps.LatLng(tempLat + ", " + tempLong); 

应该是

pictureLocations[i] = new google.maps.LatLng(tempLat,tempLong); 

更安全:

pictureLocations[i] = new google.maps.LatLng(
                            parseFloat(tempLocation.latitude),
                            parseFloat(tempLocation.longitude));

来自JSON,它们都是字符串。您甚至可以通过测试&#34; isNaN&#34;来验证它们是有效数字。在使用它们构建google.maps.LatLng之前。

答案 1 :(得分:0)

pictureLocations,你使用它的方式是一个数组......输出为字符串,试试......

var tempPictureLocation = pictureLocations.join(" ");

虽然,这可能不起作用,因为我不确定是什么......

pictureLocations[i] = new google.maps.LatLng(tempLat + ", " + tempLong); 
使用此代码将

...放入数组中。

答案 2 :(得分:0)

Google Maps LatLng构造函数是为参数设计的,在数字之间加上逗号,如下所示:pictureLocations[i] = new google.maps.LatLng(tempLat, tempLong);