欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android百度地圖poi范圍搜索

 更新時(shí)間:2016年02月05日 10:47:42   投稿:mrr  
這篇文章主要介紹了Android百度地圖poi范圍搜索的相關(guān)資料,需要的朋友可以參考下

我想大家可能都有過這樣的經(jīng)歷:兜里揣著一張銀行卡,在街上到處找自動(dòng)取款機(jī)(ATM)。在這個(gè)場(chǎng)景中,ATM就是的興趣點(diǎn),我們想做的事情就是找到離自己較近的一些ATM然后取款,此時(shí)我們并不關(guān)心附近有哪些超市、酒吧,因?yàn)檫@些地方?jīng)]辦法取錢!

說了這么多,一方面是加深大家對(duì)POI這個(gè)詞的認(rèn)識(shí),另一方面也是為了讓大家明白我們接下來要做的事情。理論性的東西就不再多講了,直接來看例子。

先給大家展示下效果圖:

詳細(xì)界面:

該示例主要介紹關(guān)鍵詞查詢、suggestion查詢和查看餐飲類Place詳情頁功能,尤其搜索某個(gè)地方的餐廳、理發(fā)店等等比較有實(shí)際意義,百度Demo代碼如下:

Activity:

package com.home;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.EditText;
import android.widget.Toast;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.search.MKAddrInfo;
import com.baidu.mapapi.search.MKBusLineResult;
import com.baidu.mapapi.search.MKDrivingRouteResult;
import com.baidu.mapapi.search.MKPoiInfo;
import com.baidu.mapapi.search.MKPoiResult;
import com.baidu.mapapi.search.MKSearch;
import com.baidu.mapapi.search.MKSearchListener;
import com.baidu.mapapi.search.MKShareUrlResult;
import com.baidu.mapapi.search.MKSuggestionInfo;
import com.baidu.mapapi.search.MKSuggestionResult;
import com.baidu.mapapi.search.MKTransitRouteResult;
import com.baidu.mapapi.search.MKWalkingRouteResult;
/**
* 演示poi搜索功能
*/
public class PoiSearchActivity extends Activity {
private MapView mMapView = null;
private MKSearch mSearch = null; // 搜索模塊,也可去掉地圖模塊獨(dú)立使用
/**
* 搜索關(guān)鍵字輸入窗口
*/
private AutoCompleteTextView keyWorldsView = null;
private ArrayAdapter<String> sugAdapter = null;
private int load_Index;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DemoApplication app = (DemoApplication) this.getApplication();
if (app.mBMapManager == null) {
app.mBMapManager = new BMapManager(this);
app.mBMapManager.init(DemoApplication.strKey,
new DemoApplication.MyGeneralListener());
}
setContentView(R.layout.activity_poisearch);
mMapView = (MapView) findViewById(R.id.bmapView);
mMapView.getController().enableClick(true);
mMapView.getController().setZoom(12);
// 初始化搜索模塊,注冊(cè)搜索事件監(jiān)聽
mSearch = new MKSearch();
mSearch.init(app.mBMapManager, new MKSearchListener() {
// 在此處理詳情頁結(jié)果
@Override
public void onGetPoiDetailSearchResult(int type, int error) {
if (error != 0) {
Toast.makeText(PoiSearchActivity.this, "抱歉,未找到結(jié)果",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(PoiSearchActivity.this, "成功,查看詳情頁面",
Toast.LENGTH_SHORT).show();
}
}
/**
* 在此處理poi搜索結(jié)果
*/
public void onGetPoiResult(MKPoiResult res, int type, int error) {
// 錯(cuò)誤號(hào)可參考MKEvent中的定義
if (error != 0 || res == null) {
Toast.makeText(PoiSearchActivity.this, "抱歉,未找到結(jié)果",
Toast.LENGTH_LONG).show();
return;
}
// 將地圖移動(dòng)到第一個(gè)POI中心點(diǎn)
if (res.getCurrentNumPois() > 0) {
// 將poi結(jié)果顯示到地圖上
MyPoiOverlay poiOverlay = new MyPoiOverlay(
PoiSearchActivity.this, mMapView, mSearch);
poiOverlay.setData(res.getAllPoi());
mMapView.getOverlays().clear();
mMapView.getOverlays().add(poiOverlay);
mMapView.refresh();
// 當(dāng)ePoiType為2(公交線路)或4(地鐵線路)時(shí), poi坐標(biāo)為空
for (MKPoiInfo info : res.getAllPoi()) {
if (info.pt != null) {
mMapView.getController().animateTo(info.pt);
break;
}
}
} else if (res.getCityListNum() > 0) {
// 當(dāng)輸入關(guān)鍵字在本市沒有找到,但在其他城市找到時(shí),返回包含該關(guān)鍵字信息的城市列表
String strInfo = "在";
for (int i = 0; i < res.getCityListNum(); i++) {
strInfo += res.getCityListInfo(i).city;
strInfo += ",";
}
strInfo += "找到結(jié)果";
Toast.makeText(PoiSearchActivity.this, strInfo,
Toast.LENGTH_LONG).show();
}
}
public void onGetDrivingRouteResult(MKDrivingRouteResult res,
int error) {
}
public void onGetTransitRouteResult(MKTransitRouteResult res,
int error) {
}
public void onGetWalkingRouteResult(MKWalkingRouteResult res,
int error) {
}
public void onGetAddrResult(MKAddrInfo res, int error) {
}
public void onGetBusDetailResult(MKBusLineResult result, int iError) {
}
/**
* 更新建議列表
*/
@Override
public void onGetSuggestionResult(MKSuggestionResult res, int arg1) {
if (res == null || res.getAllSuggestions() == null) {
return;
}
sugAdapter.clear();
for (MKSuggestionInfo info : res.getAllSuggestions()) {
if (info.key != null)
sugAdapter.add(info.key);
}
sugAdapter.notifyDataSetChanged();
}
@Override
public void onGetShareUrlResult(MKShareUrlResult result, int type,
int error) {
}
});
keyWorldsView = (AutoCompleteTextView) findViewById(R.id.searchkey);
sugAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line);
keyWorldsView.setAdapter(sugAdapter);
/**
* 當(dāng)輸入關(guān)鍵字變化時(shí),動(dòng)態(tài)更新建議列表
*/
keyWorldsView.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
}
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2,
int arg3) {
if (cs.length() <= 0) {
return;
}
String city = ((EditText) findViewById(R.id.city)).getText()
.toString();
/**
* 使用建議搜索服務(wù)獲取建議列表,結(jié)果在onSuggestionResult()中更新
*/
mSearch.suggestionSearch(cs.toString(), city);
}
});
}
@Override
protected void onPause() {
mMapView.onPause();
super.onPause();
}
@Override
protected void onResume() {
mMapView.onResume();
super.onResume();
}
@Override
protected void onDestroy() {
mMapView.destroy();
super.onDestroy();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mMapView.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mMapView.onRestoreInstanceState(savedInstanceState);
}
/**
* 影響搜索按鈕點(diǎn)擊事件
*
* @param v
*/
public void searchButtonProcess(View v) {
EditText editCity = (EditText) findViewById(R.id.city);
EditText editSearchKey = (EditText) findViewById(R.id.searchkey);
mSearch.poiSearchInCity(editCity.getText().toString(), editSearchKey
.getText().toString());
}
public void goToNextPage(View v) {
// 搜索下一組poi
int flag = mSearch.goToPoiPage(++load_Index);
if (flag != 0) {
Toast.makeText(PoiSearchActivity.this, "先搜索開始,然后再搜索下一組數(shù)據(jù)",
Toast.LENGTH_SHORT).show();
}
}
}

布局XML(activity_poisearch):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="在" >
</TextView>
<EditText
android:id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="北京" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="市內(nèi)找" >
</TextView>
<AutoCompleteTextView
android:id="@+id/searchkey"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.88"
android:text="餐廳" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="horizontal" >
<Button
android:id="@+id/search"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="12"
android:background="@drawable/button_style"
android:onClick="searchButtonProcess"
android:padding="10dip"
android:text="開始" />
<Button
android:id="@+id/map_next_data"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="12"
android:background="@drawable/button_style"
android:onClick="goToNextPage"
android:padding="10dip"
android:text="下一組數(shù)據(jù)" />
</LinearLayout>
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
</LinearLayout>

MyPoiOverlay類

package com.home;
import android.app.Activity;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.PoiOverlay;
import com.baidu.mapapi.search.MKPoiInfo;
import com.baidu.mapapi.search.MKSearch;
public class MyPoiOverlay extends PoiOverlay {
MKSearch mSearch;
public MyPoiOverlay(Activity activity, MapView mapView, MKSearch search) {
super(activity, mapView);
mSearch = search;
}
@Override
protected boolean onTap(int i) {
super.onTap(i);
MKPoiInfo info = getPoi(i);
if (info.hasCaterDetails) {
mSearch.poiDetailSearch(info.uid);
}
return true;
}
}

在配置文件中要比之前多配置一個(gè)activity,不然沒法查看詳細(xì)界面,這是百度SDK jar中提供的類:

<activity
android:name="com.baidu.mapapi.search.PlaceCaterActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar" >
</activity>

Application類同之前。

相關(guān)文章

  • Android實(shí)現(xiàn)閱讀進(jìn)度記憶功能

    Android實(shí)現(xiàn)閱讀進(jìn)度記憶功能

    這篇文章主要介紹了Android實(shí)現(xiàn)閱讀進(jìn)度記憶功能,Android控件WebView實(shí)現(xiàn)保存閱讀進(jìn)度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Android自定義SurfaceView實(shí)現(xiàn)畫板功能

    Android自定義SurfaceView實(shí)現(xiàn)畫板功能

    這篇文章主要為大家詳細(xì)介紹了Android自定義SurfaceView實(shí)現(xiàn)畫板功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android 中Seekbar詳解及簡單實(shí)例

    Android 中Seekbar詳解及簡單實(shí)例

    這篇文章主要介紹了Android 中Seekbar詳解及簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Android實(shí)現(xiàn)的可以調(diào)整透明度的圖片查看器實(shí)例

    Android實(shí)現(xiàn)的可以調(diào)整透明度的圖片查看器實(shí)例

    這篇文章主要介紹了Android實(shí)現(xiàn)的可以調(diào)整透明度的圖片查看器,需要的朋友可以參考下
    2014-07-07
  • Android studio實(shí)現(xiàn)菜單操作

    Android studio實(shí)現(xiàn)菜單操作

    這篇文章主要為大家詳細(xì)介紹了Android studio實(shí)現(xiàn)菜單操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 使用Kotlin+RocketMQ實(shí)現(xiàn)延時(shí)消息的示例代碼

    使用Kotlin+RocketMQ實(shí)現(xiàn)延時(shí)消息的示例代碼

    這篇文章主要介紹了使用Kotlin+RocketMQ實(shí)現(xiàn)延時(shí)消息的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Android 超詳細(xì)SplashScreen入門教程

    Android 超詳細(xì)SplashScreen入門教程

    Android 12正式版即將發(fā)布,有一個(gè)非常顯著的視覺變化就是,Android 12強(qiáng)制給所有的App都增加了SplashScreen的功能。是的,即使你什么都不做,只要你的App安裝到了Android 12手機(jī)上,都會(huì)自動(dòng)擁有這個(gè)新功能
    2022-03-03
  • Android仿IOS10圓盤時(shí)間選擇器

    Android仿IOS10圓盤時(shí)間選擇器

    這篇文章主要為大家詳細(xì)介紹了Android仿IOS10圓盤時(shí)間選擇器,自定義圓盤時(shí)間選擇器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android實(shí)現(xiàn)微信登錄的示例代碼

    Android實(shí)現(xiàn)微信登錄的示例代碼

    微信登錄的實(shí)現(xiàn)與qq登錄類似。本文主要介紹了Android實(shí)現(xiàn)微信登錄,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Android 利用三階貝塞爾曲線繪制運(yùn)動(dòng)軌跡的示例

    Android 利用三階貝塞爾曲線繪制運(yùn)動(dòng)軌跡的示例

    本篇文章主要介紹了Android 利用三階貝塞爾曲線繪制運(yùn)動(dòng)軌跡的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03

最新評(píng)論