使用Google Maps API V3制作一些地标

时间:2013-05-21 13:57:13

标签: google-maps-api-3 kml

我有一个包含多个地标的KML文件,例如:

   <Placemark>
   <name>00550M</name>
   <description></description>
   <styleUrl>#550M</styleUrl>
   <Polygon>
     <outerBoundaryIs>
       <LinearRing>
         <tessellate>1</tessellate>
         <coordinates>
          -019.2041,63.4130
          -013.2722,57.0138
          004.2309,52.4405
           001.1318,49.5607
          -021.0657,55.3650
          -019.2041,63.4130
          </coordinates>
        </LinearRing>
     </outerBoundaryIs>
   </Polygon>
</Placemark>

使用地球插件,我可以使用地标填充数组:

if ('getFeatures' in top.mykml) {  
var firstChild = top.mykml.getFeatures().getFirstChild();
while(firstChild !== null){                                      
    top.myObjects.push(firstChild);
    firstChild = firstChild.getNextSibling();        
  }    
} 

并使它们可见或不可见:

for (var i = 0; i <  aLen; i++){
  aName = top.myObjects[i].getName();          
  aFL = (aName.substring(2, 5));    
  if (aFL == '200'){
    top.myObjects[i].setVisibility(true);               
  } 
}

但是,地图中没有getFeatures,

if ('featureData' in top.mykml) 

返回false。

是否有可能实现我想做的事情,如果是这样的话。如果不是,我猜每个地标都必须放在一个文件中。

感谢。

1 个答案:

答案 0 :(得分:1)

KmlLayer不允许您访问地图上的对象。

我有两个选择:

  1. 将您的KML导入FusionTables并使用查询来显示或隐藏地标
  2. 使用第三方KML解析器,例如geoxml3geoxml-v3,使用原生Google Maps Javascript API v3对象呈现KML并公开,以便您可以控制它们
  3. example using geoxml3