【问题标题】:Using custom markers in fusion-tables with address already geocoded locations在具有地址已地理编码位置的融合表中使用自定义标记
【发布时间】:2012-04-25 09:26:07
【问题描述】:

我试图按照此示例 http://code.google.com/p/gmaps-samples/source/browse/trunk/fusiontables/custom_markers.html?spec=svn2515&r=2515 创建自定义标记。 我试图更改示例以使用我的数据。不同之处在于我的数据已经过地理编码。当我更改表 ID 和代码列时,我很难弄清楚为什么它不起作用。 所以我在原始代码和我的数据上打印了“地址”。

带有示例融合表的原始代码,像这样输出位置

(37.4471132, -122.1602044)

因为我的表格已经被地理编码,所以我拿走了大部分功能

function codeAddress(row) {
    alert(row[1]);
    var marker = new google.maps.Marker(
            {
                map : map,
                position : row[1],
                //this is where the magic happens!
                icon : new google.maps.MarkerImage(icon: new google.maps.MarkerImage("http://www.google.com/images/icons/product/fusion_tables-32.png")
            }); 
}

但警报只显示坐标有点不同

<Point><coordinates>-78.423652,-0.203057,0.0</coordinates></Point>

是的,这就是我认为它不起作用的原因

【问题讨论】:

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


    【解决方案1】:

    我的意见是position : 后面必须跟google.maps.LatLng

    看起来row 数据来自 KML,您需要提取前两个数字来创建 LatLng。

    【讨论】:

    • 不要忘记 KML 是经度后跟纬度。
    • 你好,几个小时后我找到了答案,但我没有足够的分数回答我自己的问题,你是对的。谢谢
    【解决方案2】:

    Mia DiLorenzo 是对的,MarkerOption position 需要 LatLng object

    Look at this example,与您的非常相似,但它使用Coordinates 字段来创建标记。

    该示例假定坐标字段中的数据以逗号分隔的“lat,lng” 例如47.7672,-3.2022

    但如果您的数据恰好是 KML 格式,那么您可以提取 lat/lng 值。这些值按顺序排列:经度、纬度和高度(有关 KML coordinates 的详细信息,请参阅 KML reference):

    function createLatLngObject(kmlString) {
       //remove XML tags from input
       var xmlRegEx = /<\/?\w+>/;
       var kmlValue = kmlString.replace(xmlRegEx,'');
    
       // now kmlValue contains e.g. -78.423652,-0.203057,0.0
    
       //extract latitude and longitude
       var coordinates = kmlValue.split(",");
       var lat = coordinates[1];
       var lng = coordinates[0];
    
       return new google.maps.LatLng(lat, lng);
    }
    
    function createMarker(row) {
       var latlng = createLatLngObject(row[1]);
       var marker = new google.maps.Marker({
           map: map, 
           position: latlng,
           icon: new google.maps.MarkerImage("http://www.google.com/images/icons/product/fusion_tables-32.png")
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      相关资源
      最近更新 更多