欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Android Map Api 使用和開發(fā)(2) 定位我的位置、

系統(tǒng) 2005 0

上篇把界面畫出來了, 接下來就是顯示里面的功能了,那這篇內容就比較豐富了。

主要有這么幾道菜:

1、在地圖上彈出泡泡顯示信息,并且能相應泡泡的點擊時間

2、自動定位當前位置(也就是我的位置) --添加了 GPS定位和基站定位。

3、獲取經緯度對應的接到地址名稱

那下面就開始代碼把,理論知識能講多少是多少。


一 、 地圖彈出泡泡的制作

1 、overlay_popup.xml 直接把layout放出來

還有泡泡的效果圖 ,很多同學做項目都是時間很緊張的,別人貼出來代碼都覺得不夠直觀,有截圖是王道,

順應大部分懶人的習慣,我編截圖邊發(fā):

Android Map Api 使用和開發(fā)(2) 定位我的位置、地圖彈出泡泡、通過經緯度獲取地址

看到了吧, 泡泡上有title ,有 desc ,還有一個小icon。我把整個layout 設置成:

android:clickable="true" android:focusable="true"

這樣這個layout就相當余一個button了,可以點擊。

2、那代碼怎么實現(xiàn)呢? FzMapActivity里加入下面代碼

在進入主界面是 初始化一下view。

private View popView;當然這個變量定義也不能少。

3、自定義itemizedOverlay MyItemizedOverlay

好把,先把代碼放出來,光描述怎么寫太費勁了。

主要是繼承 OnFocusChangeListener 監(jiān)聽地圖層的變化, 為了方便監(jiān)聽button事件也繼承了OnClickListener。

下面這方法監(jiān)聽這個層改變的時間,把泡泡彈出來。

public void onFocusChanged(ItemizedOverlay overlay, OverlayItem newFocus) {

Log.d(TAG , "item focus changed!");

if (null != newFocus) {

Log.d(TAG , "centerY : " + itemDrawable.getBounds().centerY() + "; centerX :" + itemDrawable.getBounds().centerX());

Log.d(TAG , " height : " + itemDrawable.getBounds().height());

MapView.LayoutParams params = (MapView.LayoutParams) mPopView.getLayoutParams();

params.x = this.layout_x;//Y軸偏移

params.y = this.layout_y;//Y軸偏移

point = newFocus.getPoint();

params.point = point;

mMapCtrl.animateTo(point);

TextView title_TextView = (TextView) mPopView.findViewById(R.id.map_bubbleTitle);

title_TextView.setText(newFocus.getTitle());

TextView desc_TextView = (TextView) mPopView.findViewById(R.id.map_bubbleText);

if(null == newFocus.getSnippet() || "".equals(newFocus.getSnippet())){

desc_TextView.setVisibility(View.GONE);

}else{

desc = newFocus.getSnippet();

desc_TextView.setText(desc);

desc_TextView.setVisibility(View.VISIBLE);

}

RelativeLayout button = (RelativeLayout) mPopView.findViewById(R.id.map_bubblebtn);

button.setOnClickListener(this);

mMapView.updateViewLayout(mPopView, params);

mPopView.setVisibility(View.VISIBLE);

selectItem = newFocus;

}

}

二、長按地圖獲取地圖位置并彈出泡泡顯示信息

它的繼承關系 LongPressOverlay extends Overlay implements OnDoubleTapListener

LongPressOverlay這個層主要是用來接收長按事件 和雙擊地圖界面的

@Override

public void onLongPress(MotionEvent e) {

mContext.locPoint = mMapView.getProjection().fromPixels((int) e.getX(),

(int) e.getY());

mHandler.sendEmptyMessage(mContext.MSG_VIEW_LONGPRESS);

}接收到長按事件后給主界面發(fā)消息,由主界面處理。

三、FzLocationManager 這個類用來做gps,基站定位

public interface LocationCallBack{

/**

* 當前位置

* @param location

*/

void onCurrentLocation(Location location);

}

定義一個接口 ,當監(jiān)聽到位置變化時,回調主界面

//locationListener注冊監(jiān)聽器到位置服務管理里

networkLocationManager.requestLocationUpdates(

LocationManager.NETWORK_PROVIDER, MINTIME, MININSTANCE,

locationListener);

//位置信息變化回調

private void updateLocation(Location location) {

lastLocation = location;

mCallback.onCurrentLocation(location);

}

四、主界面邏輯

主界面有

部分注釋寫在代碼里了

最后再上一張截圖,在室內通過基站定位到我的位置:

Android Map Api 使用和開發(fā)(2) 定位我的位置、地圖彈出泡泡、通過經緯度獲取地址

五、通過經緯度獲取地址

這個單獨拷貝出來讓大家看看。這個方法獲取地址有時候獲取不到的,google好像對這個接口有限制。說白了就這這個接口不靠譜。

大家可以嘗試用別的方法或手段獲取地址

我的代碼里加了個死循環(huán)去獲取位置,這樣的方案是不可取的,不過暫時用一下看看效果也好。

/**

*通過經緯度獲取地址

* @param point

* @return

*/

private String getLocationAddress(GeoPoint point){

String add = "";

Geocoder geoCoder = new Geocoder(getBaseContext(),

Locale.getDefault());

try {

List<Address> addresses = geoCoder.getFromLocation(

point.getLatitudeE6() / 1E6, point.getLongitudeE6() / 1E6, 1);

Address address = addresses.get(0);

int maxLine = address.getMaxAddressLineIndex();

if(maxLine >= 2){

add = address.getAddressLine(1) + address.getAddressLine(2);

}else {

add = address.getAddressLine(1);

}

} catch (IOException e) {

add = "";

e.printStackTrace();

}

return add;

}

好了,以上是所有代碼, AndroidManifest.xml 在 (一)里有。

最后小結

用google的api獲取到的位置放到他的地圖上是有偏差的,而且偏差還比不小,大家可以觀察一下,這個問題沒有很好的免費解決方案。

如果有哪位有什么好建議可以發(fā)出來,謝謝。

用基站和gps定位是,也沒有處理那個是更好的定位的問題。

歡迎大家提建議

Android Map Api 使用和開發(fā)(2) 定位我的位置、地圖彈出泡泡、通過經緯度獲取地址


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲视频在线一区 | 久久精品视频一区二区 | 韩国三级bd高清中字木鱼天 | 国产成人小视频在线观看 | 久热综合 | 天天操天天摸天天爽 | 免费观看毛片 | 97麻豆精品国产自产在线观看 | 新视觉yy6080午夜毛片 | 黄色片视频免费看 | www欧美| 91久久久久 | 深爱婷婷 | 国产精品久久久久久日本一道 | 成人日韩 | 亚洲第一网站 | 日日舔夜夜操 | 成人影院在线 | 99久久九九爱看免费直播 | 中国女人内谢69xxxx天美 | 国产日韩一区二区 | 日本不卡一区二区三区在线观看 | 免费中文字幕 | 九九综合九九 | 毛片免费在线观看 | 欧美精品中文字幕久久二区 | 无码免费一区二区三区免费播放 | 精品美女在线观看视频在线观看 | 香港三级日本三级韩国a | 日韩欧美在线免费观看视频 | 国产精品视频网 | 91蜜芽尤物福利在线观看 | 性夜影院爽黄a免费视频 | 日韩二区 | 狠狠色狠色综合曰曰 | 99久久99久久精品免费看蜜桃 | 狠狠色丁香婷婷综合久久片 | 精品久久久久久久 | 亚洲日韩中文字幕一区 | 小凤仙的故事 电视剧 | 一级毛片不卡片免费观看 |