如何在Yahoo Maps API中从位置(地址)字符串转换为YGeoPoint?

时间:2020-03-05 18:56:17  来源:igfitidea点击:

我有一个数据库的地址列表,我想在Yahoo Map上为其添加标记。 YMap上的addMarker()方法采用一个YGeoPoint,它需要一个经度和纬度。但是,Yahoo Maps必须知道如何从地址转换,因为drawZoomAndCenter(LocationType,ZoomLevel)可以使用地址。我可以通过使用drawZoomAndCenter()然后再使用getCenterLatLon()进行转换,但是有没有更好的方法,不需要绘制?

解决方案

回答

如果我们使用的是美国地址,则可以使用具有API的geocoder.us。

此外,Google Maps Hacks为此具有一个" Hack 62.查找街道地址的经度和纬度"的技巧。

回答

我们可以要求地图对象执行geoCoding并捕获回调:

<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调用本身会发出geoCoding请求,因此我们也将从中获取回调。我们可能希望将其过滤掉,或者基于GeoPoint设置地图的中心。