• 地图本地查询


    百度地图API中有一个服务,称为LocalSearch,顾名思义就是本地搜索。

    构造函数

    LocalSearch(location:Map|Point|String[, opts:LocalSearchOptions])

    描述

    创建一个搜索类实例,其中location 表示检索区域,其类型可为地图实例、坐标点或城市名称的字符串。当参数为地图实例时,检索位置由当前地图中心点确定,且搜索结果的标注将自动加载到地图上,并支持调整地图视野层级;当参数为坐标时,检索位置由该点所在位置确定;当参数为城市名称时,检索会在该城市内进行。

    要确定“本地”为何地有两种方式:

    1、直接写城市名,如“西安市”

    2、提供一个经纬度信息,如“108.977055, 34.217914”,是大唐芙蓉园的坐标。

    提供经纬度又分成两种,一种是将map对象作为参数传给LocalSerch的构造函数,另一种是将point对象作为参数传给LocalSerch的构造函数。这两者之间有什么区别呢?

    如果使用的是map对象作为参数,那么一会儿显示的搜索结果将以这个map为中心。

    如果使用point对象为参数,那么显示的结果将以这个点为中心。

    如下面这段代码:

    <script type="text/javascript">
    var map = new BMap.Map("position");
    var point = new BMap.Point(108.977055, 34.217914);
    map.centerAndZoom(point, 17);
    
    var dtxs = new BMap.Point(108.915189,34.25151);
    var local = new BMap.LocalSearch(
    map,{renderOptions:{map: map}}
    );
    local.search("超市");
    </script>

    显示结果为:

    可以看到其实没什么区别。

    这是什么原因呢?

     猜测可能的原因有两个:1、默认将搜索范围划为全市搜索了;2、是因为搜索的内容太大,没有足够的约束条件来对两个搜索结果进行差异化。

    尝试将关键字分别改为“小肥羊火锅”、“小肥羊火锅 西工大”、“小肥羊火锅 西交大”,查看不同的效果:

    local.search("小肥羊火锅");//“小肥羊火锅 西工大”、“小肥羊火锅 西交大”
    

    地图分别显示为:

    可以看到,如果不增加约束条件的话,会默认显示全市的“小肥羊火锅店”,如果增加了约束,地图中心会移动到搜索的结果所在的位置。如果搜索的结果为空(如“小肥羊火锅 西交大”)那么将会显示默认的地图,不做任何其他标注。

    搜索一定范围内的目标

    local.searchNearby("餐馆",point,100);

    三个参数分别为:搜索关键字(可以为数组)、中心地点、半径。

    PS:如果中心地点不是用point,而是用一个string,比如“大唐芙蓉园”之类的,那么最后一个参数“半径”将会失效。

    以下是同一个地点,但搜索半径不同时呈现的效果:

    该类的其他方法可以参考“百度地图javascript API类参考”文档。

  • 相关阅读:
    postgresql 的统计信息
    postgresql 查看表、列的备注信息
    redis 4.0.9 cluster + startup stop
    redis 4.0.9 cluster + failover
    oracle ebs r12 打补丁的步骤
    centos 7.4 + redis 4.0.9 cluster + make
    pgpool running mode
    pgpool + streaming replication mode + slave down up
    pgpool 的安装之一
    postgresql 函数的三个状态
  • 原文地址:https://www.cnblogs.com/elaron/p/2733478.html
Copyright © 2020-2023  润新知