0

我试图按照这个例子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>

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

4

2 回答 2

1

Mia DiLorenzo 是对的,MarkerOptionposition需要一个LatLng 对象

看看这个例子,它与你的非常相似,但它使用Coordinates字段来创建标记。

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

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

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")
    });
}
于 2012-04-13T21:33:47.920 回答
1

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

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

于 2012-04-13T03:17:23.590 回答