我正在尝试使用谷歌自己的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。我相信他们的构造陈述是错的,但不确定究竟出了什么问题。如果我在某些坐标中进行硬编码,它也不起作用。谢谢您的帮助!
答案 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);