我在Google Fusion Table中有一个名为"xy"的列。 每个单元格中的值完全采用以下格式:30.319067,-97.739454
我创建了一个这些值的数组,var locationList = []。尝试使用此数组并检索纬度、长数据以放入位置选项,但它无法识别它。 我在下面有一个警报功能,以查看正在传递的内容,它会发出警报(NaN,NaN(。
for (var i = 0; i < locationList.length ; i++){
if (obj.id == i){
alert(locationList[0]);
marker = new google.maps.Marker({
map:Map,
position: new google.maps.LatLng(locationList[i]),
animation: google.maps.Animation.DROP,
zoom: 0});
break;}
}
谁能告诉我这些价值观是怎么回事?是格式问题吗...?数据类型问题?
我的融合表中也有这种格式的"几何"列:
<Point><coordinates>-97.739454,30.319067,0.0</coordinates></Point>
不确定哪一列最适合标记位置。 无论哪一列,我只想看到那个标记弹跳!
感谢您的帮助!
我为纬度和经度创建了两个不同的列,它们在我的融合表中采用数字数据类型。数据在数组中 var latitudeList = [];和变量经度列表 = [];。
for (var i = 0; i < numRow ; i++){
if (obj.id == i){
alert(latitudeList[3]);
alert(nameList[i]);
var LatLng = new google.maps.LatLng(parseFloat(latitudeList[i]),parseFloat(longitudeList[i]));
marker = new google.maps.Marker({
map:PuppyMap,
position: LatLng,
animation: google.maps.Animation.DROP,
zoom: 0});
alert([i]); break;}
};
现在我再次使用警报来查看发生了什么,以及警报(纬度列表[0](;警报(30.23423,NaN(,带括号,我不明白。每个单元格都包含 30.xxxxx 作为数字的纬度值,它们应该以这种方式在数组中。和alert(parseFloat(latitudeList[0](,parseFloat(longitudeList[0]((;提醒 NaN。
我想我不确定 NaN 是什么,,,
google.maps.LatLng对象将两个数字作为其参数,而不是包含两个用逗号分隔的数字的字符串。 这是不正确的:
marker = new google.maps.Marker({
map:Map,
position: new google.maps.LatLng(locationList[i]),
animation: google.maps.Animation.DROP,
zoom: 0});
应该是
var coords = locationList[i].split(',');
var latlng = new google.maps.LatLng(coords[0], coords[1]);
marker = new google.maps.Marker({
map:Map,
position: latlng,
animation: google.maps.Animation.DROP,
zoom: 0});
更安全:
var coords = locationList[i].split(',');
var latlng = new google.maps.LatLng(parseFloat(coords[0]), parseFloat(coords[1]));
marker = new google.maps.Marker({
map:Map,
position: latlng,
animation: google.maps.Animation.DROP,
zoom: 0});;
因为来自FusionTable,它是一个字符串。 您甚至可以通过使用它们构建google.maps.LatLng之前测试"isNaN"来验证它们是有效的数字。