我有一个地址列表,需要放置在地图上并在每个不同半径周围显示一个圆圈。
我有一个列出所有点的 KML 文件,我想在 KML 中添加一个“半径”自定义字段,并能够根据自定义字段在每个点周围画一个圆圈。
我在正确的轨道上还是有更简单的方法来做到这一点?
我有一个地址列表,需要放置在地图上并在每个不同半径周围显示一个圆圈。
我有一个列出所有点的 KML 文件,我想在 KML 中添加一个“半径”自定义字段,并能够根据自定义字段在每个点周围画一个圆圈。
我在正确的轨道上还是有更简单的方法来做到这一点?
很有可能在 KML 地标周围画圈。我使用了geoxml3 处理器。 第一的,
kmz 文件和“network_link”还有另一个版本。(我没有尝试过这些)。
有一个坏消息,我断定无法插入自定义标签并让 geoxml3 找到它们。因此,要使圆半径可变,您需要将该信息放在“描述”标签中并进行解析,如果您正在组合数据,请使用正则表达式。还有另外两个不太合适的选项:“Name”和“styleUrl”。
这是我放在一起的简单页面。 https://files.nyu.edu/hc742/public/googlemaps/kmlcircle.html
javascript 看起来像这样,重要的部分是在 geoXml 选项中定义“createMarker”回调函数。
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="geoxml3.js"></script>
<script type="text/javascript">
var map;
var geoXml = null;
var mapOptions = { center: new google.maps.LatLng(39.370, -100.0), zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP };
function initialize() {
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
geoXml = new geoXML3.parser({
map: map,
createMarker: addCircle});
geoXml.parse('https://files.nyu.edu/hc742/public/googlemaps/simple.kml')
}
function addCircle(placemark) {
//rad = parseFloat(placemark.description);
rad = parseFloat(placemark.styleUrl);
marker = new google.maps.Marker({map:map, position:placemark.latlng});
circle = new google.maps.Circle({map:map, center: placemark.latlng, radius: rad});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
使用此 KML:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<name>simple</name>
<description>nothing</description>
<Placemark>
<name>simple</name>
<description>2000</description>
<styleUrl>8000</styleUrl>
<Point>
<coordinates>-122.0822035425683,37.42228990140251,1220</coordinates>
</Point>
</Placemark>
<Placemark>
<name>simple</name>
<description>5001</description>
<styleUrl>3000</styleUrl>
<Point>
<coordinates>-122.0822035425683,37.22228990140251,4330</coordinates>
</Point>
</Placemark>
<Placemark>
<name>C</name>
<description>9001</description>
<styleUrl>2000</styleUrl>
<Point>
<coordinates>-122.00000000001,37.000000000001,9001</coordinates>
</Point>
</Placemark>
</Document>
</kml>
取决于你有多少个地址。如果您的 KML 文件有几兆大,那么您可能走在正确的轨道上。但是,Google Maps API 中的 KmlLayer 无法让您直接访问点中的数据,因此您添加半径自定义字段的计划将行不通。似乎您最好将各个点呈现为地址。这些文章可能会有所帮助: https://developers.google.com/maps/articles/toomanymarkers https://developers.google.com/maps/articles/phpsqlsearch_v3 https://developers.google.com/maps /articles/phpsqlgeocode
然后围绕它创建一个圆形对象。