【问题标题】:Google Marker Position Option: retrieving Latitude and Longitude from Google Fusion Table谷歌标记位置选项:从谷歌融合表中检索纬度和经度
【发布时间】:2013-10-03 16:22:13
【问题描述】:

我在 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;}


}

谁能告诉我传递这些值是怎么回事?是格式问题吗...?数据类型问题?

我的 Fusion Table 中也有“几何”列,格式如下:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 两个参数!这就说得通了。谢谢!
    • 您好,我为两个参数创建了两个单独的纬度和经度列,但无济于事。我已将我的问题添加到我的原始帖子中......非常感谢您的帮助。
    • 你是如何查询FusionTable的? latitudeList 和 longitudeList 是从哪里来的?
    • 我在 Google Fusion Table 上使用 Google Visualization。
    • 我正在寻找执行此操作的代码。请将其添加到您的问题中(或为这个新问题创建一个包含它的新问题)。
    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多