【发布时间】:2014-08-19 17:46:09
【问题描述】:
我想用谷歌地图检索世界上每个城市的经纬度。 我用a Google Fusion table:
function requestCities()
{
var script = document.createElement('script');
var url = ['https://www.googleapis.com/fusiontables/v1/query?'];
url.push('sql=');
//var query = 'SELECT CITY_NAME, geometry, POP_RANK, STATUS FROM ' + '1jmboG7oPaWTAUKubEl__YMVvkIkmhKTxxfD3wNo' + " WHERE 'CNTRY_NAME' = '"+ focusedCountry +"'";
var query = 'SELECT CITY_NAME, geometry, POP_RANK, STATUS, FIPS_CNTRY, GMI_ADMIN FROM ' + '1ld4KaHF-E6UbFoN_VdCUp_s0_liEE7poZ7v4OmU' + " WHERE 'POP_RANK' \< 5";
//var query = 'SELECT CITY_NAME, geometry, POP_RANK, STATUS FROM ' + '1jmboG7oPaWTAUKubEl__YMVvkIkmhKTxxfD3wNo';
var encodedQuery = encodeURIComponent(query);
url.push(encodedQuery);
url.push('&callback=setCities');
url.push('&key=AIzaSyACrx-nlt1KZ8cDNpsvW_FW8JPEKfbpF8g');
script.src = url.join('');
var body = document.getElementsByTagName('body')[0];
body.appendChild(script);
}
在我的回调函数中,我 try to add a marker on each city:
function setCities(data)
{
var rows = data['rows'];
console.log(rows[0]);
var nbInfobox = document.getElementById("infobox-wrapper").getElementsByTagName("div").length;
for (var i in rows)
{
var name = rows[i][0];
var pop_rank = rows[i][2];
var status = rows[i][3];
//var countryCode = rows[i][4];
var cityCode = rows[i][5];
var countryCode = cityCode.substring(0,2);
var capital = eval(status[0] == "N");
var myLatlng = new google.maps.LatLng(rows[i][1]['geometry']['coordinates'][1], rows[i][1]['geometry']['coordinates'][0]);
var image = 'img/marker_'+ pop_rank+ '.png';
if (capital)
{
var image = 'img/marker_capital.png';
pop_rank = 0;
}
var marker = new google.maps.Marker(
{
position: myLatlng,
title: name,
zIndex: 7 - pop_rank,
icon: image
});
//Create infobox for selected cities
$("#infobox-wrapper").append("<div id=\"infobox" + nbInfobox + "\" class=\"infoboxcountry\" />");
var info = new InfoBox({
content: document.getElementById("infobox" + nbInfobox),
position: marker.getPosition(),
disableAutoPan: true,
pixelOffset: new google.maps.Size(0, 0),
zIndex: 0,
closeBoxURL: ""
});
$("#infobox" + nbInfobox).html(marker.getTitle());
var city = new City(i, marker, info, pop_rank, countryCode, cityCode);
overlays.cities.push(city);
google.maps.event.addListener(marker, 'click', function() {
cityClick(this);
});
++nbInfobox;
}
}
我的查询结果是一个包含世界上所有城市的数组,如下所示:
["Lima", "<Point><coordinates>", "1", "National and provincial capital", "PE", "PER-LIM"]
但我总是得到这个错误:
Uncaught TypeError: Cannot read property 'coordinates' of undefined
我不知道如何从我的数组 var 行中获取坐标。如果有人知道,谢谢你的帮助。
【问题讨论】:
-
@geocodezip 我可以为你说同样的话,我允许你在线重现确切的错误但你不能因为 Facebook 登录并且你说“向其他人寻求帮助”所以为什么现在和我的帖子争论??
-
与其教用户他们必须做什么,不如将重点放在您的问题上。在您编写问题的那一刻,您应该很明显
"<Point><coordinates>"不是预期的响应,它是一个字符串而不是一个对象,因此尝试获取['geometry']['coordinates']必须在此字符串上失败。请记住这一点,您的简短问题(如 geocodezip 在已删除问题中所要求的)应该是“为什么我没有从表中得到预期的响应”。发布更多不相关的代码并没有使您的问题变得更好。 -
@Dr.Molle 太有趣了.....您也没有找到答案,对您来说也不明显!你为什么要在这里为别人辩护,我不是在这里教任何人我只是遇到问题,就是这样!
-
嗯,你一定是对的:注意@Dr. Molle 首先回答.. 我们都得出了相似的结论,但是我花了太多时间来研究这个问题而没有发布答案。 – p e p 1 小时前 我找到了答案,但也许你丢失了什么?
标签: javascript google-maps-api-3 google-fusion-tables