Android(安卓)百度 Map----定位功能
16lz
2021-01-26
package com.liu.map;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.LocationListener;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKLocationManager;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKSuggestionResult;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.MyLocationOverlay;
import com.baidu.mapapi.Overlay;
import com.liu.R;
import com.liu.util.MapApplication;
public class LocMapActivity extends MapActivity implements LocationListener {
MapView mMapView;// 地图控件
MapController mMapController;// 得到mMapView的控制权,可以用它控制和驱动平移和
GeoPoint geoPoint;
MyLocationOverlay mylocTest;
MKLocationManager mkLocManager;
MKSearch mKSearch;
LocationListener mLocationListener;
@Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
setContentView(R.layout.activity_main);
super.initMapActivity(MapApplication.getInstance().getMapManager());
MapApplication.getInstance().getMapManager().start();
initMap();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
@Override
protected void onPause() {
MapApplication.getInstance().getMapManager().getLocationManager()
.removeUpdates(mLocationListener);
MapApplication.getInstance().getMapManager().stop();
super.onPause();
}
@Override
protected void onResume() {
MapApplication.getInstance().getMapManager().getLocationManager()
.requestLocationUpdates(mLocationListener);
MapApplication.getInstance().getMapManager().start();
super.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
public void initMap() {
mMapView = (MapView) findViewById(R.id.bmapsView);
mMapController = mMapView.getController();
mMapView.setBuiltInZoomControls(true); // 设置启用内置的缩放控件
mMapController.setZoom(12); // 设置地图zoom级别
mKSearch = new MKSearch();
mKSearch.init(MapApplication.getInstance().getMapManager(),
new MKSearchListener() {
public void onGetWalkingRouteResult(
MKWalkingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub
}
public void onGetTransitRouteResult(
MKTransitRouteResult arg0, int arg1) {
// TODO Auto-generated method stub
}
public void onGetSuggestionResult(MKSuggestionResult arg0,
int arg1) {
// TODO Auto-generated method stub
}
public void onGetRGCShareUrlResult(String arg0, int arg1) {
// TODO Auto-generated method stub
}
public void onGetPoiResult(MKPoiResult arg0, int arg1,
int arg2) {
// TODO Auto-generated method stub
}
public void onGetDrivingRouteResult(
MKDrivingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub
}
public void onGetBusDetailResult(MKBusLineResult arg0,
int arg1) {
// TODO Auto-generated method stub
}
public void onGetAddrResult(MKAddrInfo info, int error) {
if (error != 0) {
String str = String.format("错误号:%d", error);
return;
}
String strInfo = String.format("纬度:%f 经度:%f 地址:%s\r\n",
info.geoPt.getLatitudeE6() / 1e6,
info.geoPt.getLongitudeE6() / 1e6,
info.addressComponents.city
+ info.addressComponents.district
+ info.addressComponents.street);
Toast.makeText(LocMapActivity.this, strInfo,
Toast.LENGTH_LONG).show();
}
});
mLocationListener = new LocationListener() {
public void onLocationChanged(Location loc) {
if (loc != null) {
geoPoint = new GeoPoint((int) (loc.getLatitude() * 1E6),
(int) (loc.getLongitude() * 1E6));
mKSearch.reverseGeocode(geoPoint);
mMapController.animateTo(geoPoint);
mMapController.setCenter(geoPoint); // 设置地图中心点
// 添加到MapView的覆盖物中
mMapView.getOverlays().add(new MyOverlay());
Log.e("baidu_lat", String.valueOf(loc.getLatitude()));
Log.e("baidu_lon", String.valueOf(loc.getLongitude()));
}
}
};
}
public class MyOverlay extends Overlay {
Paint paint = new Paint();
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
// 在所在位置绘制一个String
Point point = mMapView.getProjection().toPixels(geoPoint, null);
canvas.drawText("★当前位置", point.x, point.y, paint);
}
}
public void onLocationChanged(Location location) {
location.getLatitude();
location.getLongitude();
}
}
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.LocationListener;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKLocationManager;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKSuggestionResult;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.MyLocationOverlay;
import com.baidu.mapapi.Overlay;
import com.liu.R;
import com.liu.util.MapApplication;
public class LocMapActivity extends MapActivity implements LocationListener {
MapView mMapView;// 地图控件
MapController mMapController;// 得到mMapView的控制权,可以用它控制和驱动平移和
GeoPoint geoPoint;
MyLocationOverlay mylocTest;
MKLocationManager mkLocManager;
MKSearch mKSearch;
LocationListener mLocationListener;
@Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
setContentView(R.layout.activity_main);
super.initMapActivity(MapApplication.getInstance().getMapManager());
MapApplication.getInstance().getMapManager().start();
initMap();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
@Override
protected void onPause() {
MapApplication.getInstance().getMapManager().getLocationManager()
.removeUpdates(mLocationListener);
MapApplication.getInstance().getMapManager().stop();
super.onPause();
}
@Override
protected void onResume() {
MapApplication.getInstance().getMapManager().getLocationManager()
.requestLocationUpdates(mLocationListener);
MapApplication.getInstance().getMapManager().start();
super.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
public void initMap() {
mMapView = (MapView) findViewById(R.id.bmapsView);
mMapController = mMapView.getController();
mMapView.setBuiltInZoomControls(true); // 设置启用内置的缩放控件
mMapController.setZoom(12); // 设置地图zoom级别
mKSearch = new MKSearch();
mKSearch.init(MapApplication.getInstance().getMapManager(),
new MKSearchListener() {
public void onGetWalkingRouteResult(
MKWalkingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub
}
public void onGetTransitRouteResult(
MKTransitRouteResult arg0, int arg1) {
// TODO Auto-generated method stub
}
public void onGetSuggestionResult(MKSuggestionResult arg0,
int arg1) {
// TODO Auto-generated method stub
}
public void onGetRGCShareUrlResult(String arg0, int arg1) {
// TODO Auto-generated method stub
}
public void onGetPoiResult(MKPoiResult arg0, int arg1,
int arg2) {
// TODO Auto-generated method stub
}
public void onGetDrivingRouteResult(
MKDrivingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub
}
public void onGetBusDetailResult(MKBusLineResult arg0,
int arg1) {
// TODO Auto-generated method stub
}
public void onGetAddrResult(MKAddrInfo info, int error) {
if (error != 0) {
String str = String.format("错误号:%d", error);
return;
}
String strInfo = String.format("纬度:%f 经度:%f 地址:%s\r\n",
info.geoPt.getLatitudeE6() / 1e6,
info.geoPt.getLongitudeE6() / 1e6,
info.addressComponents.city
+ info.addressComponents.district
+ info.addressComponents.street);
Toast.makeText(LocMapActivity.this, strInfo,
Toast.LENGTH_LONG).show();
}
});
mLocationListener = new LocationListener() {
public void onLocationChanged(Location loc) {
if (loc != null) {
geoPoint = new GeoPoint((int) (loc.getLatitude() * 1E6),
(int) (loc.getLongitude() * 1E6));
mKSearch.reverseGeocode(geoPoint);
mMapController.animateTo(geoPoint);
mMapController.setCenter(geoPoint); // 设置地图中心点
// 添加到MapView的覆盖物中
mMapView.getOverlays().add(new MyOverlay());
Log.e("baidu_lat", String.valueOf(loc.getLatitude()));
Log.e("baidu_lon", String.valueOf(loc.getLongitude()));
}
}
};
}
public class MyOverlay extends Overlay {
Paint paint = new Paint();
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
// 在所在位置绘制一个String
Point point = mMapView.getProjection().toPixels(geoPoint, null);
canvas.drawText("★当前位置", point.x, point.y, paint);
}
}
public void onLocationChanged(Location location) {
location.getLatitude();
location.getLongitude();
}
}
更多相关文章
- Android(安卓)之 布局训练
- OpenGL学习1
- Android(安卓)View事件分发机制理解
- android 背景设置
- Android(安卓)-- Notification
- Android(安卓)监听电话状态
- android辅助圆按钮
- android studio gradle常用设置
- 使用ComponentName启动Activity