Android 百度地圖 簡單實現--- 美食搜尋

來源:互聯網
上載者:User

標籤:android   百度地圖 美食   

Android 百度地圖 簡單實現---  美食依賴包:
添加 Android 百度依賴包:

1  key:
 <!--        開發人員 key -->
        <meta-data            android:name="com.baidu.lbsapi.API_KEY"            android:value=" 申請的Key" />


2 許可權:
 <!-- baimap 許可權 -->    <uses-permission android:name="android.permission.GET_ACCOUNTS" />    <uses-permission android:name="android.permission.USE_CREDENTIALS" />    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.BROADCAST_STICKY" />    <uses-permission android:name="android.permission.WRITE_SETTINGS" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />


3 代碼:
package com.example.loveyoulmap;import java.util.List;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import android.widget.Toast;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.InfoWindow;import com.baidu.mapapi.map.InfoWindow.OnInfoWindowClickListener;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.Marker;import com.baidu.mapapi.map.MarkerOptions;import com.baidu.mapapi.map.OverlayOptions;import com.baidu.mapapi.model.LatLng;import com.baidu.mapapi.overlayutil.PoiOverlay;import com.baidu.mapapi.search.core.PoiInfo;import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;import com.baidu.mapapi.search.poi.PoiCitySearchOption;import com.baidu.mapapi.search.poi.PoiDetailResult;import com.baidu.mapapi.search.poi.PoiDetailSearchOption;import com.baidu.mapapi.search.poi.PoiResult;import com.baidu.mapapi.search.poi.PoiSearch;public class MainActivity extends Activity {//MapViewprivate MapView mapView;//百度地圖   MapView.getMap();private BaiduMap baiduMap;//Poi  搜尋private PoiSearch poiSearch;//  webView 顯示詳情private WebView webView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 去掉標題的顯示(就是app 最頂上的顯示內容!)requestWindowFeature(1);// 在使用SDK各組件之前初始化context資訊,傳入ApplicationContext// 注意該方法要再setContentView方法之前實現SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);// 擷取 MapViewmapView = (MapView) this.findViewById(R.id.map);webView = (WebView) this.findViewById(R.id.webview);//初始化  poiSearch 對象!poiSearch = PoiSearch.newInstance();// 擷取地圖視圖:baiduMap = mapView.getMap();baiduMap.setTrafficEnabled(true);//baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);baiduMap.setMaxAndMinZoomLevel(15, 19);// 1 建立當前位置的標誌setOnePointToMap();// 2 設定為 點擊事件:setPointListener();// 3 擷取 興趣點: 搜尋服務!getPoiResourse();}/** * //TODO 1 建立當前位置的標誌 */private void setOnePointToMap() {// 2 描述其BitmapDescriptor descriptor = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);// 3 位置 緯經度// 116.396364,39.916097LatLng latLng = new LatLng(39.916097, 116.396364);// 1 覆蓋一層 透視的 圖層!OverlayOptions overlayOptions = new MarkerOptions().title("北京站").icon(descriptor).position(latLng);// 向地圖添加一個 OverlaybaiduMap.addOverlay(overlayOptions);}/** * //TODO  2 設定 當前位置的  點擊事件   彈出視圖! */private void setPointListener() {//baiduMap 的 覆蓋物 被點擊! 觸發該 事件。baiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {@Overridepublic boolean onMarkerClick(Marker marker) {// TODO 開啟檢索:  實在 點擊之後觸發的事件。  所搜方式: 城市內搜尋!poiSearch.searchInCity(new PoiCitySearchOption().keyword("美食").city("北京").pageNum(0).pageCapacity(10));Button btn = new Button(getApplicationContext());btn.setBackgroundColor(Color.RED);btn.setText(marker.getTitle());// btn 變成 View 圖片BitmapDescriptor descriptor = BitmapDescriptorFactory.fromView(btn);/** * 彈窗的點擊事件: *  - InfoWindow 展示的bitmap position  *  - InfoWindow 顯示的地理位置 *  - InfoWindow Y 軸位移量 listener  *  - InfoWindow 點擊監聽者 *  InfoWindow 點擊的時候 消失。 * */InfoWindow infoWindow = new InfoWindow(descriptor, marker.getPosition(), -60, new OnInfoWindowClickListener() {public void onInfoWindowClick() {// TODO Auto-generated method stub// 當使用者點擊 彈窗 觸發:// 開啟 POI 檢索、 開啟 路徑規矩, 跳轉介面!// 1 隱藏 彈窗!baiduMap.hideInfoWindow();}});// 2 show infoWindowbaiduMap.showInfoWindow(infoWindow);return false;}});}/** * // 3 擷取 興趣點: * 點擊 本地的 表徵圖的時候 開始 所搜資料。 * TODO 1 把興趣點 顯示在地圖上 *  TODO 2 點擊一個興趣點 彈窗顯示 該點的名字! */private void getPoiResourse() {//設定poi檢索監聽者poiSearch.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {@Overridepublic void onGetPoiResult(PoiResult arg0) {// TODO 擷取到 興趣結果資料時 觸發// bind to baidumap// PoiOverlay poiOverlay = new PoiOverlay(baiduMap);//顯示所有的興趣點結果:MyPoiOvrely poiOverlay = new MyPoiOvrely(baiduMap);//MyPoiOvrely 實現了 new OnMarkerClickListener() 所以點擊覆蓋物的時候 會觸發事件!baiduMap.setOnMarkerClickListener(poiOverlay);poiOverlay.setData(arg0);poiOverlay.addToMap();// 價格地圖縮放至 可以顯示 全部情趣店的層級!poiOverlay.zoomToSpan();}@Overridepublic void onGetPoiDetailResult(PoiDetailResult arg0) {// TODO 但擷取 興趣  詳情時 觸發String url = arg0.getDetailUrl();//設定 webView 顯示的用戶端!webView.getSettings().setJavaScriptEnabled(true);webView.setScrollBarStyle(0);WebSettings webSettings = webView.getSettings();webSettings.setAllowFileAccess(true);webSettings.setBuiltInZoomControls(true);webView.setWebViewClient(new WebViewClient(){@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {// TODO Auto-generated method stubreturn false;}});//載入資料webView.loadUrl(url);}});}//自訂 PoiOverlay:class MyPoiOvrely extends PoiOverlay {public MyPoiOvrely(BaiduMap arg0) {super(arg0);// TODO Auto-generated constructor stub}//1 需要 點擊事件:興趣點的位置 索引!@Overridepublic boolean onPoiClick(int index) {// TODO Auto-generated method stub// 擷取當前 覆蓋層的Poi結果對象PoiResult. PoiResult result =  getPoiResult();//在擷取 PoiResult 中的List《poiInfo》 集合資料!List<PoiInfo> lists =result.getAllPoi();//根據索引 擷取 集合中的 資料資訊! 興趣點對象資料對象。final PoiInfo info = lists.get(index);// 彈出彈窗 彈窗中 內容: poiinfo name!baiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {@Overridepublic boolean onMarkerClick(Marker marker) {// TODO Auto-generated method stub//點擊擷取 顯示詳細資料!getPoiInfo(info);return false;}/** * 點擊擷取 顯示詳細資料! * @param info * @param marker */private void getPoiInfo(final PoiInfo info) {// 設定彈窗 (View arg0, LatLng arg1, int arg2) y 位移量 ,Button btn = new Button(getApplicationContext());btn.setBackgroundColor(Color.GREEN);btn.setText(info.name);// btn 變成 View 圖片BitmapDescriptor descriptor = BitmapDescriptorFactory.fromView(btn);/** * 彈窗的點擊事件: *  * bd - InfoWindow 展示的bitmap position - InfoWindow 顯示的地理位置 * yOffset - InfoWindow Y 軸位移量 listener - InfoWindow 點擊監聽者 *  * */InfoWindow infoWindow = new InfoWindow(descriptor, info.location, -60,new OnInfoWindowClickListener() {public void onInfoWindowClick() {//TODO 當使用者點擊 彈窗 觸發:// 開啟 POI 檢索、 開啟 路徑規矩, 跳轉介面!// 在彈窗監聽器中  二次檢索興趣點的詳情!//  開始搜尋: poiSearch.searchPoiDetail(new PoiDetailSearchOption().poiUid(info.uid));// 1 隱藏 彈窗!baiduMap.hideInfoWindow();}});// 2 show infoWindowbaiduMap.showInfoWindow(infoWindow);}});return super.onPoiClick(index);}}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();mapView.onResume();}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();mapView.onPause();}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();mapView.onDestroy();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}




Android 百度地圖 簡單實現--- 美食搜尋

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.