我在Google Fusion Table中有一个名为'xy'的专栏。每个单元格中的值都采用以下格式: 30.319067,-97.739454
我已经创建了这些值的数组,var locationList = []。 试图使用这个数组并检索lat,long数据以输入position选项,但它没有识别它。我在下面有一个警报功能,看看传递了什么,它会发出警报(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;}
}
有人能告诉我这些价值被传递的是什么吗?这是格式问题吗?数据类型问题?
我的Fusion表中也有这种格式的'Geometry'列:
<Point><coordinates>-97.739454,30.319067,0.0</coordinates></Point>
不确定哪个列最适合标记位置。无论哪一列,我只想看到那个标记弹跳!
感谢您的帮助!
我为纬度和经度创建了两个不同的列,它们在我的Fusion Table中的数字数据类型中。数据在数组var latitudeList = [];和var longitudeList = [];。
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;}
};
现在我再次使用警报来查看正在发生的事情,并发出警报(latitudeList [0]); 警告(30.23423,NaN),括号,我不明白。每个单元格包含纬度值为30.xxxxx作为数字,它们应该在数组中。 并且alert(parseFloat(latitudeList [0]),parseFloat(longitudeList [0])); 警告NaN。
我想我不确定NaN是什么,,,
答案 0 :(得分:0)
a google.maps.LatLng object将两个数字作为参数,而不是包含两个以逗号分隔的数字的字符串。这是不正确的:
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”来验证它们是有效数字。