Google标记位置选项:从Google Fusion表中检索纬度和经度

时间:2013-10-03 16:22:14

标签: javascript google-maps google-maps-markers google-fusion-tables

我在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是什么,,,

1 个答案:

答案 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”来验证它们是有效数字。