zoukankan      html  css  js  c++  java
  • 【百度地图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>
  • 相关阅读:
    494 Target Sum 目标和
    493 Reverse Pairs 翻转对
    492 Construct the Rectangle 构建矩形
    491 Increasing Subsequences 递增子序列
    488 Zuma Game 祖玛游戏
    486 Predict the Winner 预测赢家
    485 Max Consecutive Ones 最大连续1的个数
    483 Smallest Good Base
    Django Form组件
    Django Auth组件
  • 原文地址:https://www.cnblogs.com/milkmap/p/2030971.html
Copyright © 2011-2022 走看看