• 【百度地图API】当地址解析失败时,如何调用search方法查找地址


    有个朋友问我,当地址解析失败时,应该如何处理呢?比如,他想搜索“南宁市青秀区”。

    -----------------------------------------------------------------------------

    首先,我们需要弄明白,地址解析的原理

    使用Geocoder进行地址解析,比如“北京市海淀区上地10街”,当系统匹配到这个地址时,getPoint就会返回一个坐标点。
    这里需要用到回调函数。
    var myGeo = new BMap.Geocoder();// 将地址解析结果显示在地图上,并调整地图视野
    myGeo.getPoint("北京市海淀区上地10街", function(point){
    if (point) {
    map.centerAndZoom(point,
    16);
    map.addOverlay(
    new BMap.Marker(point));
    }},
    "北京市"); 

    当系统无法匹配“北京市海淀区上地10街”的时候,会返回“北京市海淀区”的几何中心点。
    如果还是无法匹配,会返回“北京市”的几何中心点。

    如果你只是想返回“北京市”的坐标,或者说想要模糊查询,建议不要使用地址解析。
    而是使用LocalSearch类的search方法。例子详见:
    http:
    //www.cnblogs.com/milkmap/archive/2010/12/22/1914106.html

    当地址解析失败时,你可以调用localsearch函数。这个方法被称之为模糊查询

    在以下的例子里,为了方便快捷,我取了第一个查询结果。

    这样,当地址解析“南宁市青秀区”失败时,会自动search这个地址,并打点在地图上。

    完整源代码:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>地址解析失败时搜索</title>
    <meta name="Generator" content="EditPlus">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script>
    </head>

    <body>
    <div id="divMap" style="400px;height:400px;border:solid 1px gray"></div>
    <script type="text/javascript">
    var map = new BMap.Map("divMap");
    map.centerAndZoom(
    new BMap.Point(108.532769,22.825487), 12); //这里是定义到了南宁市
    var gc = new BMap.Geocoder();
    gc.getPoint(
    "南宁市青秀区", function(pt){
    if(pt){
    map.addOverlay(
    new BMap.Marker(pt)); //如果地址解析成功,则添加红色marker
    }else{
    var ls = new BMap.LocalSearch("南宁市");
    ls.search(
    "南宁市青秀区");
    ls.setSearchCompleteCallback(
    function(rs){
    if (ls.getStatus() == BMAP_STATUS_SUCCESS){
    var poi = rs.getPoi(0); //取第1个查询结果
    if(poi){
    var pt2 = poi.point;
    map.addOverlay(
    new BMap.Marker(pt2)); //如果查询到,则添加红色marker
    }
    }
    else{
    alert(
    "fail");
    }
    });
    }
    },
    "南宁市");
    </script>
    </body>
    </html>
  • 相关阅读:
    leetcode 39 Combination Sum
    C/C++ 单元测试 catch
    二叉树
    线性表
    POJ1002
    HDU4329
    hdu 4329
    java代码优化总结1
    Linux操作系统常用命令总结1
    java开发基础知识总结1
  • 原文地址:https://www.cnblogs.com/milkmap/p/2030971.html
Copyright © 2020-2023  润新知