我有一个来自数据库的地址列表,我想在雅虎地图上放置标记。YMap 上的addMarker()
方法需要一个 YGeoPoint,它需要一个纬度和经度。但是,Yahoo Maps 必须知道如何从地址转换,因为drawZoomAndCenter(LocationType,ZoomLevel)
可以获取地址。我可以使用drawZoomAndCenter()
then进行转换,getCenterLatLon()
但有没有更好的方法,不需要平局?
Nick Fortescue
问问题
1004 次
2 回答
1
您可以要求地图对象进行地理编码,并捕获回调:
<script type="text/javascript">
var map = new YMap(document.getElementById('map'));
map.drawZoomAndCenter("Algeria", 17);
map.geoCodeAddress("Cambridge, UK");
YEvent.Capture(map, EventsList.onEndGeoCode, function(geoCode) {
if (geoCode.success)
map.addOverlay(new YMarker(geoCode.GeoPoint));
});
</script>
需要注意的一件事——在这个例子中,drawAndZoom
调用本身会发出一个地理编码请求,所以你也会从中得到回调。您可能希望将其过滤掉,或根据 GeoPoint 设置地图的中心。
于 2008-09-17T09:47:11.630 回答
-1
如果您使用美国地址,您可以使用geocoder.us,它有APIs。
此外,Google Maps Hacks有一个 hack,“Hack 62. Find the Latitude and Longitude of a Street Address”。
于 2008-09-16T15:32:18.703 回答