Google Map API使用详解(二十)——实现Google Map本地搜索框(下)
2、使用自定义的JS和Google Map API中的GClientGeocoder类
其实Google Map API中提供了一个GClientGeocoder类来实现地址译码,即实现地名与坐标的转换,这个是需要从客户端提交地名来查找数据库从而返回坐标值。
先看下面的代码:
var rpoint;
var map = new GMap2(document.getElementById("GMapContainer"));
var geocoder = new GClientGeocoder();
geocoder.getLatLng(str,function(rpoint){
//alert(str);
if(!rpoint){
alert(str+" 无法解析地址");
}
else{
//alert(rpoint);
map.setCenter(rpoint,15);
var marker = new GMarker(rpoint);
map.addOverlay(marker);
marker.openInfoWindowHtml("欢迎查看"+str+"地图");
map.enableDoubleClickZoom();
map.enableScrollWheelZoom();
map.enableContinuousZoom();
map.addControl(new GLargeMapControl())
map.addControl(new GOverviewMapControl());
map.addControl(new GScaleControl());
map.addControl(new GMapTypeControl());
new GKeyboardHandler(map);
//map.enableGoogleBar();
}
});
从上面的代码可以看出,geocoder为GClientGeocoder类的一个实例,再通过方法
geocoder.getLatLng(str,function);
来获取地名str相对应得地理坐标值,再通过GMap2类的map对象来展现地图。由此可见,使用自定义的方法需要两次查询谷歌地图的服务器。当然从效率上来讲,还是不如GoogleBar好,也没有GoogleBar好用,但是在某些场合,还是很有必要的。
参考示例:MyApp2.html.
(此系列完结)