地圖本地查詢


百度地圖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類參考”文檔。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM