日期:2014-05-16  浏览次数:20351 次

求个googlemap api的查询精度问题
各位好。现在在学习googlemap的第三版api,关于地址解析这方面,调用api是不是跟谷歌自己的地图的查找精度有差异啊。比如我在自己的项目里搜索“齐鲁软件园”,返回的结果只有青岛崂山的软件园和济南历下区的软件园。可是在谷歌里查询有1400多个结果。是不是因为api是免费的,所以不给那么精确啊

附js代码片段

var geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': address//查询文字
}, function (results, status) {
//回调函数
});
googlemap?javascript googlemap api

------解决方案--------------------
请使用google.maps.places.PlacesService类进行检索
在调用api是加入libraries=places引入places库
<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false&libraries=places"></script>


/*检索方法*/
function search() {
var address = document.getElementById('searchTextField').value;//获取文本框中输入的检索关键字
            var service = new google.maps.places.PlacesService(map);//初始化类,将map对象传入
//检索用的属性对象
            var request = {
                bounds: map.getBounds(),//获取地图区域
                query: address,//检索关键字
                location: map.getCenter()//获取地图中心
            };
    service.textSearch(request, callback);//执行检索操作,callback为检索完毕后回调函数
}
/*检索完成后,将检索结果集合中的一个作为地图中心,并在地图上标注每个检索结果*/
  function callback(result, status) {
   if (status == google.maps.GeocoderStatus.OK) {
     map.setCenter(result[0].geometry.location);
        for (var i = 0; i < result.length; i++) {
var marker = new google.maps.Marker({
map: map,
position: result[i].geometry.location
});
}
}
}