GitHub地址:github.com/fluttify-pr…html
dependencies:
flutter:
sdk: flutter
amap_search_fluttify: ^x.x.x
複製代碼
android {
signingConfigs {
release {
keyAlias 'amap_map_test'
keyPassword 'amap_map_test'
storeFile file('../amap_map_test.jks')
storePassword 'amap_map_test'
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
}
profile {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
}
}
}
複製代碼
import 'package:amap_search_fluttify/amap_search_fluttify.dart';
複製代碼
高德提供了千萬級別的 POI(Point of Interest,興趣點)。在地圖表達中,一個 POI 可表明一棟大廈、一家商鋪、一處景點等等。經過POI搜索,完成找餐館、找景點、找廁所等等的功能。地圖 SDK 的搜索功能提供多種獲取 POI 數據的接口,下文將逐一介紹。android
根據關鍵字檢索適用於在某個城市搜索某個名稱相關的POI,例如:查找北京市的「肯德基」。ios
注意:
一、關鍵字未設置城市信息(默認爲全國搜索)時,若是涉及多個城市數據返回,僅會返回建議城市,請根據APP需求,選取城市進行搜索。
二、不設置POI的類別,默認返回「餐飲服務」、「商務住宅」、「生活服務」這三種類別的POI,下方提供了POI分類碼錶,請按照列表內容設置但願檢索的POI類型。(建議使用POI類型的代碼進行檢索)
實現關鍵字檢索的步驟以下:git
final poiList = await AmapSearch.instance.searchKeyword(
'關鍵字',
city: '城市',
);
複製代碼
此方法會返回一個Poi列表,Poi
中包含了全部信息。github
適用於搜索某個位置附近的POI,可設置POI的類別,具體查詢所在位置的餐飲類、住宅類POI,例如:查找天安門附近的廁所等等場景。
與關鍵字檢索的惟一區別須要經過 radius
參數設置圓形查詢範圍。
redis
final poiList = await AmapSearch.instance.searchAround(
LatLng(29.08, 119.65),
keyword: '關鍵字',
type: '類型',
city: '城市',
radius: 1000, // 搜索半徑
);
複製代碼
輸入提示是指根據用戶輸入的關鍵詞,給出相應的提示信息,將最有可能的搜索詞呈現給用戶,以減小用戶輸入信息,提高用戶體驗。如:輸入「方恆」,提示「方恆國際中心A座」,「方恆購物中心」等。
例如用戶輸入「高德」,輸入框下方的列表會顯示包含關鍵字字段的輸入提示信息。顯示效果如圖所示:
markdown
實現輸入提示的步驟以下:app
final inputTipList = await AmapSearch.instance.fetchInputTips(
'關鍵字',
city: '城市',
);
複製代碼
返回類型爲InputTip列表。ide
注意:
a 、因爲提示中會出現相同的關鍵字,可是這些關鍵字所在區域不一樣,使用時能夠經過district
字段得到區域,也能夠在提示時在關鍵字後加上區域。
b、當 Tip 的 getPoiID() 返回空,而且 getPoint() 也返回空時,表示該提示詞不是一個真實存在的 POI,這時區域、經緯度參數都是空的,此時可根據該提示詞進行POI關鍵詞搜索
c、當 Tip 的 getPoiID() 返回不爲空,但 getPoint() 返回空時,表示該提示詞是一個公交線路名稱,此時用這個id進行公交線路查詢。
d、當 Tip 的 getPoiID() 返回不爲空,且 getPoint() 也不爲空時,表示該提示詞一個真實存在的POI,可直接顯示在地圖上。
oop
地理編碼基本介紹
地理編碼,又稱爲地址匹配,是從已知的結構化地址描述到對應的經緯度座標的轉換過程。該功能適用於根據用戶輸入的地址確認用戶具體位置的場景,經常使用於配送人員根據用戶輸入的具體地址找地點。
結構化地址的定義: 首先,地址確定是一串字符,內含國家、省份、城市、城鎮、鄉村、街道、門牌號碼、屋邨、大廈等建築物名稱。按照由大區域名稱到小區域名稱組合在一塊兒的字符。一個有效的地址應該是獨一無二的。注意:針對大陸、港、澳地區的地理編碼轉換時能夠將國家信息選擇性的忽略,但省、市、城鎮等級別的地址構成是不能忽略的。
注意:該功能能夠返回一部分POI數據內容,但核心能力是完成結構化地址到經緯度的轉換。
根據給定的地理名稱和查詢城市,返回地理編碼的結果列表。顯示效果如圖:
實現步驟以下:
final geocodeList = await AmapSearch.instance.searchGeocode(
'關鍵字',
city: '城市',
);
複製代碼
逆地理編碼,又稱地址解析服務,是指從已知的經緯度座標到對應的地址描述(如行政區劃、街區、樓層、房間等)的轉換。經常使用於根據定位的座標來獲取該地點的位置詳細信息,與定位功能是黃金搭檔。
示例代碼以下:
final reGeocodeList = await AmapSearch.instance.searchReGeocode(
LatLng(29, 119),
radius: 200.0,
);
複製代碼
公交出行路線規劃 指定起點[from]和終點[to]進行計算, 還能夠指定計算路徑的模式[mode], 默認爲最快捷. [city]指定所在城市,[nightflag]是否計算夜班車,默認爲不計算,0:不計算,1:計算
final routeResult = await AmapSearch.instance.searchBusRoute(
from: LatLng(
double.parse(_fromLatController.text),
double.parse(_fromLngController.text),
),
to: LatLng(
double.parse(_toLatController.text),
double.parse(_toLngController.text),
),
city: '杭州',
);
複製代碼
根據縣(區)級行政區劃名稱查詢其下級區劃的詳細信息,如:中心點座標、編碼等等。
目前能查詢到街道級別的信息,例如:中國>山東省>濟南市>歷下區>舜華路街道(國>省>市>區>街道)。
示例代碼以下:
final district = await AmapSearch.instance.searchDistrict(
_keywordController.text,
showBoundary: true,
);
複製代碼
步行路徑規劃能夠根據起終點和步行路線的數據,使用 addPolyline
畫出步行路線圖層,包括起終點和轉彎點。另外也能夠自定義起終點和步行轉彎點的圖標。
final routeResult = await AmapSearch.instance.searchWalkRoute(
from: LatLng(
double.parse(_fromLatController.text),
double.parse(_fromLngController.text),
),
to: LatLng(
double.parse(_toLatController.text),
double.parse(_toLngController.text),
),
);
複製代碼
返回routeResult
後,可使用其字段拿到關心的數據。
駕車路徑規劃能夠根據起終點和駕車路線的數據,使用 addPolyline
畫出駕車路線圖層,包括起終點和轉彎點。另外也能夠自定義起終點和駕車轉彎點的圖標。
final routeResult = await AmapSearch.instance.searchDriveRoute(
from: LatLng(
double.parse(_fromLatController.text),
double.parse(_fromLngController.text),
),
to: LatLng(
double.parse(_toLatController.text),
double.parse(_toLngController.text),
),
passedByPoints: [], // 途徑點
avoidRoad: '避開道路',
);
複製代碼
返回routeResult
後,可使用其字段拿到關心的數據。
公交路徑規劃能夠根據起終點和公交換乘的數據,使用 BusRouteOverlay 畫出公交路線圖層,包括起終點和換乘點。另外也能夠自定義起終點和換乘點的圖標。
目前支持跨城公交路線規劃,提供不一樣城市之間的火車換成方案。
指定起點[from]和終點[to]進行計算, 還能夠指定計算路徑的模式[mode], 默認爲最快捷. [city]指定所在城市,[nightflag]是否計算夜班車,默認爲不計算,0:不計算,1:計算
final routeResult = await AmapSearch.instance.searchBusRoute(
from: LatLng(
double.parse(_fromLatController.text),
double.parse(_fromLngController.text),
),
to: LatLng(
double.parse(_toLatController.text),
double.parse(_toLngController.text),
),
city: '城市',
mode: 0,
nightflag: 0,
);
複製代碼
返回routeResult
後,可使用其字段拿到關心的數據。
騎行路徑規劃能夠根據起終點和騎行路線的數據,使用 addPolyline
畫出騎行路線圖層,包括起終點和轉彎點。另外也能夠自定義起終點和騎行轉彎點的圖標。
final routeResult = await AmapSearch.instance.searchRideRoute(
from: LatLng(
double.parse(_fromLatController.text),
double.parse(_fromLngController.text),
),
to: LatLng(
double.parse(_toLatController.text),
double.parse(_toLngController.text),
),
);
複製代碼
返回routeResult
後,可使用其字段拿到關心的數據。
Copyright (C) 2020 yohom
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see www.gnu.org/licenses/.