地圖本地查詢

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.