Android類似微信詳細地址選擇(高德地圖)
利用高德地圖的API做了一個類似微信傳送位置介面地址選擇,介面就3個,一個選擇地址(周邊搜尋),一個搜尋介面(關鍵字搜尋),最後將選擇的地址資訊返回主介面,效果圖如下:
對於詳細地址選擇,在專案中難免會遇到,比如電商app,旅遊app等等,下面簡單講解如何實現:
一、註冊高德開發者賬號,建立應用,獲取AppId
1.建立應用過程
確認隨後得到appid
2.下載高德SDK:
二、地址位置選擇
1.地址選擇介面首先需要定位
private void InitLocation() { //初始化client locationClient = new AMapLocationClient(this.getApplicationContext()); //設定定位引數 locationClient.setLocationOption(getDefaultOption()); // 設定定位監聽 locationClient.setLocationListener(locationListener); locationClient.startLocation(); }
2.定位結果回撥
/** * 定位監聽 */ AMapLocationListener locationListener = new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation loc) { if (null != loc) { //解析定位結果 String city = loc.getCity(); Log.e("yufs","當前經度"+loc.getLongitude()+"當前維度:"+loc.getLatitude()); mLoc=loc; lp.setLongitude(loc.getLongitude()); lp.setLatitude(loc.getLatitude()); //得到定位資訊 Log.e("yufs","定位詳細資訊:"+loc.toString()); mLatitude=loc.getLatitude(); mLongitude=loc.getLongitude(); //初始化地圖物件 initMap(loc); //查詢周邊 doSearchQuery(loc.getCity(),loc.getLatitude(),loc.getLongitude()); } else { Toast.makeText(LocationSelectActivity.this, "定位失敗,請開啟位置許可權", Toast.LENGTH_SHORT).show(); } } };
3.定位成功回撥中進行周邊搜尋
/** * 開始進行poi搜尋 */ protected void doSearchQuery(String city,double latitude,double longitude) { String mType="汽車服務|汽車銷售|汽車維修|摩托車服務|餐飲服務|購物服務|生活服務|體育休閒服務|醫療保健服務|住宿服務|風景名勝|商務住宅|政府機構及社會團體|科教文化服務|交通設施服務|金融保險服務|公司企業|道路附屬設施|地名地址資訊|公共設施"; query = new PoiSearch.Query("", mType, city);// 第一個引數表示搜尋字串,第二個引數表示poi搜尋型別,第三個引數表示poi搜尋區域(空字串代表全國) query.setPageSize(20);// 設定每頁最多返回多少條poiitem query.setPageNum(currentPage);// 設定查第一頁 if (lp != null) { poiSearch = new PoiSearch(this, query); poiSearch.setOnPoiSearchListener(this); //以當前定位的經緯度為準搜尋周圍5000米範圍 // 設定搜尋區域為以lp點為圓心,其周圍5000米範圍 poiSearch.setBound(new PoiSearch.SearchBound(new LatLonPoint(latitude,longitude), 1000, true));// poiSearch.searchPOIAsyn();// 非同步搜尋 } }
PoiSearch.SearchBound物件以某一中心點半徑5000米的圓搜尋結果,PoiSearch.Query()的如果第二個引數未填寫會預設返回“餐飲服務”、“商務住宅”、“生活服務”這三種類別的POI,程式碼中基本上把高德所有的搜尋型別都返回了,你可以根據自己情況而定填寫搜尋型別
4.poi搜尋結果回撥監聽,獲取資料顯示
PoiSearch.OnPoiSearchListener onPoiSearchListener = new PoiSearch.OnPoiSearchListener() {
@Override
public void onPoiSearched(PoiResult result, int rCode) {
if (rCode == 1000) {
if (result != null && result.getQuery() != null) {// 搜尋poi的結果
if (result.getQuery().equals(poiQuery)) {// 是否是同一條
lv_list.onLoadComplete();
List<PoiItem> poiItems = result.getPois();// 取得第一頁的poiitem資料,頁數從數字0開始
List<PoiBean> tem=new ArrayList<>();
if (poiItems != null && poiItems.size() > 0) {
for (int i = 0; i < poiItems.size(); i++) {
PoiItem poiItem = poiItems.get(i);
PoiBean bean=new PoiBean();
bean.setTitleName(poiItem.getTitle());
bean.setCityName(poiItem.getCityName());
bean.setAd(poiItem.getAdName());
bean.setSnippet(poiItem.getSnippet());
bean.setPoint(poiItem.getLatLonPoint());
Log.e("yufs",""+poiItem.getTitle()+","+poiItem.getProvinceName()+","
+poiItem.getCityName()+","
+poiItem.getAdName()+","//區
+poiItem.getSnippet()+","
+poiItem.getLatLonPoint()+"\n");
tem.add(bean);
}
poiData.addAll(tem);
mAdapter.notifyDataSetChanged();
/* if (isSearch){
moveMapCamera(poiItems.get(0).getLatLonPoint().getLatitude(),poiItems.get(0).getLatLonPoint().getLongitude());
}*/
}
}
}
}
}
@Override
public void onPoiItemSearched(PoiItem poiItem, int i) {
}
};
其中PoiItem物件為高德提供的一個poi實體類,可以檢視返回的資料結構如下:
然後你也可以選擇其中有用的資訊封裝自己的bean,比如我的PoiBean,獲取有用的資料之後顯示在列表上,到此第一頁搞定
三、關鍵字搜尋
protected void doSearchQuery(String keyWord) {
if(currentPage==0) {
savePoiItem.clear();
ll_loading.setVisibility(View.VISIBLE);// 顯示進度框
lv_list.setVisibility(View.GONE);
}
query = new PoiSearch.Query(keyWord, "", "");// 第一個引數表示搜尋字串,第二個引數表示poi搜尋型別,第三個引數表示poi搜尋區域(空字串代表全國)
query.setPageSize(10);// 設定每頁最多返回多少條poiitem
query.setPageNum(currentPage);// 設定查第一頁
query.setCityLimit(true);
poiSearch = new PoiSearch(this, query);
poiSearch.setOnPoiSearchListener(this);
poiSearch.searchPOIAsyn();
}
同樣呼叫剛才的搜尋介面,只不過加上了關鍵字,去掉了搜尋範圍的限制,搜尋回撥介面同上,將搜尋結果顯示出來,然後搜尋頁面搞定(提醒:demo中使用自己在高德申請的Appkey,然後就可檢視效果了)
最後附上原始碼地址:
相關推薦
Android類似微信詳細地址選擇(高德地圖)
利用高德地圖的API做了一個類似微信傳送位置介面地址選擇,介面就3個,一個選擇地址(周邊搜尋),一個搜尋介面(關鍵字搜尋),最後將選擇的地址資訊返回主介面,效果圖如下: 對於詳細地址選擇,在專案中難免會遇到,比如電商app,旅遊app等等,下面簡單講解如何實現:一、註冊高
Android 仿微信錄製短視訊(不使用 FFmpeg)
轉載請標明出處與作者:https://www.jianshu.com/p/2cb7b0110fde 專案中原本就有錄製短視訊的功能,使用的是 # qdrzwd/VideoRecorder 這個專案,但是該專案不支援 targetSdkVersion 22以上的版本,而現在各大
Android仿微信開啟紅包動畫(逐幀動畫)
Frame Animation(逐幀動畫): 逐幀動畫(Frame-by-frame Animations)從字面上理解就是一幀挨著一幀的播放圖片,就像放電影一樣。和補間動畫一樣可以通過xml實現也可以通過java程式碼實現。接下來藉助目前專案中的一個開
React Native填坑之旅 -- 使用iOS原生檢視(高德地圖)
在開發React Native的App的時候,你會遇到很多情況是原生的檢視元件已經開發好了的。有的是系統的SDK提供的,有的是第三方試圖元件,總之你的APP可以直接使用的原生檢視是很多的。React Native提供了一套完善的機制,你可以非常簡單的用來包裝已有
android 仿微信多圖選擇器(帶預覽、照相功能)
實現了單選、多選 、拍照 、預覽 等功能;先上圖: 程式碼結構 下面不如正題: 一、新增依賴、許可權 1)新增以下依賴 dependencies { compile fileTree(dir: 'libs', include: ['*.jar'])
Android 仿微信的圖片選擇器ImageSelector的使用
今天給大家介紹一個仿微信的圖片選擇器:ImageSelector。ImageSelector支援圖片的單選、限數量的多選和不限數量的多選。支援圖片預覽和圖片資料夾的切換。在上一篇文章 《Android 實現一個仿微信的圖片選擇器》 中我介紹了ImageSelec
微信支付:手機系統自帶的瀏覽器,調用微信支付如何實現(非掃碼)
所有 價格 驗證 返回 調用 -i 是否為空 支付申請 data- Q:翻看了微信支付的api沒發現支持h5調支付接口的情況(微信js除外),然後卻發現美團的支付成功調用了,這是怎麽實現的? A: 使用微信H5支付即可。H5支付通過URL調起微信APP,
用python進行微信公眾號開發(僅測試學習)
python 微信公眾號 api開發今天看到篇教程,是用python開發微信公眾號的,覺得有意思,就敲代碼實現了一下,成功後更覺得好玩,故記錄,方便開發深入時使用。 基礎背景介紹: 首先得有個人微信號(沒有自行註冊),為方便測試學習; 其次,還要註冊微信公眾號,微信公眾號不止一種,是分多種的,具體詳情見官方
微信中控方法(getAccessToken、getJsapiTicket)。可繼續優化,redis作為中間層,入庫同時加入redis,要使用時先查詢redis。
IE 數據 names str namespace extend family ext nts <?php /** * 微信父類控制器 * @author Songle * */ namespace Home\Controller; use Think\C
python實現微信付款碼支付(刷卡支付)(純python)
參考連結https://github.com/Jolly23/wx_pay_python https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_10&index=1 use.py from wx_pay impo
自定義微信小程式導航(相容各種手機)
詳細程式碼請見github,請點選地址,其中有原生小程式的實現,也有wepy版本的實現 瞭解小程式預設導航 如上圖所示,微信導航分為兩部分,第一個部分為statusBarHeight,劉海屏手機(iPhone X,小米8等)會比其他的手機高很多,第二部分為titleBarHeight,安卓和IOS的高
微信小程式把玩(二十七)audio元件
音訊播放已經封裝的很好!只需配合屬性設定即可! (method和data配合使用) 主要屬性: wxml <audio action="{{action}}"
微信刷卡支付(被掃支付)
步驟: 1、掃碼 獲取被掃物件微信支付二維碼 獲得支付授權碼 即微信錢包→付款 裡面那個條形碼上面的那一串數字 2、把授權碼及所需要的引數傳給提交訂單api 3、用查詢訂單api查詢訂單付款情況 4、用while迴圈重複查詢10次 如果都是交易失敗就呼叫
php 實戰 微信公眾號 開發(獲取使用者資訊)
PHP 微信開發(獲取使用者資訊): 獲取使用者資訊的大致演算法是 使用者授權登入第三方網站, 重點:scope引數: snsapi_basic 靜默登入,不需要使用者授權,只能獲取到openid; snsapi_userinfo ,需要使用者點選授權
微信小程式四(設定底部導航)
好了 小程式的頭部標題 設定好了,我們來說說底部導航欄是如何實現的。 我們先來看個效果圖 這裡,我們添加了三個導航圖示,因為我們有三個頁面,微信小程式最多能加5個。 那他們是怎麼出現怎麼著色的呢?兩步就搞定! 1. 圖標準備 我們進入該網站,滑鼠滑到一個喜歡的圖示上面
微信小程式把玩(二十八)image元件
image元件也是一個程式不可缺少的,可以這樣說一個app中image元件隨處可以看到,一般 image有兩種載入方式第一種是網路圖片第二種是本地圖片資源,都用src屬性去指定。 重點屬性:
微信小程式把玩(二十五)loading元件
loading通常使用在請求網路資料時的一種方式,通過hidden屬性設定顯示與否 主要屬性: wxml <!----> <button type="primary"
在OpenJweb平臺中實現微信刷卡支付(被動掃碼)
微信刷卡支付流程:(1)顧客付款時,點微信錢包左上角的付款。(2)付款介面有二維碼、條碼和一排18位的數字,這個數字是有時間限制的,每分鐘重新整理一次。(3)商家POS機中錄完商品及價格後,用掃碼槍掃顧客手機中的條碼或二維碼,實際就是讀取顧客的18位的數字串,讀取到商家的系統
微信小程式把玩(三十七)location API
location API也就分這裡分兩種wx.getLocation(object)獲取當前位置和wx.openLocation(object)通過經緯度開啟內建地圖。其中定位獲取位置資訊返回引數是有問題的speed,accuracy這兩個是沒有的。還有
微信小程式把玩(三十四)Audio API
沒啥可值得太注意的地方 重要屬性: 1. wx.getBackgroundAudioPlayerState(object) 獲取播放狀態 2.wx.playBackgroundAu