谷歌标记位置选项:从谷歌融合表中检索纬度和经度

Google Marker Position Option: retrieving Latitude and Longitude from Google Fusion Table

本文关键字:谷歌 检索 纬度 经度 位置 选项 融合      更新时间:2023-09-26

我在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"来验证它们是有效的数字。