- **关于高德地图的使用,这里写了一个 Helper 类**
---
public class MapHelper {
private static MapHelper mapHelper;
private Context context;
private RegeocodeResultData regeocodeResultData;
private LocationSource.OnLocationChangedListener locationChangedListener;
private AMapLocationClientOption aMapLocationClientOption;
private AMapLocationClient aMapLocationClient;
private int zoomRatio = 18;
private UiSettings uiSettings;
private MapView mapView;
private AMap aMap;
public MapHelper (Context context){
this.context = context.getApplicationContext();
}
public synchronized static MapHelper getInstance (Context context){
if (null == mapHelper){
mapHelper = new MapHelper(context);
}
return mapHelper;
}
public void initMap (MapView mapView){
this.mapView = mapView;
aMap = mapView.getMap();
uiSettings = aMap.getUiSettings();
aMap.setLocationSource(locationSource);
aMap.setMyLocationEnabled(true);
aMap.getUiSettings().setMyLocationButtonEnabled(false);
aMap.moveCamera(CameraUpdateFactory.zoomTo(zoomRatio));
aMap.setMyLocationType(AMap.LOCATION_TYPE_MAP_FOLLOW);
MyLocationStyle style = new MyLocationStyle();
style.myLocationIcon(BitmapDescriptorFactory.fromResource(R.mipmap.own));
style.strokeColor(Color.argb(0, 0, 0, 0));
style.radiusFillColor(Color.argb(0, 0, 0, 0));
style.strokeWidth(1.0f);
aMap.setMyLocationStyle(style);
uiSettings.setZoomControlsEnabled(false);
uiSettings.setMyLocationButtonEnabled(false);
}
public LocationSource locationSource = new LocationSource() {
@Override
public void activate(OnLocationChangedListener onLocationChangedListener) {
locationChangedListener = onLocationChangedListener;
if (aMapLocationClient == null) {
aMapLocationClient = new AMapLocationClient(context);
aMapLocationClientOption = new AMapLocationClientOption();
aMapLocationClient.setLocationListener(aMapLocationListener);
aMapLocationClientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
aMapLocationClient.setLocationOption(aMapLocationClientOption);
aMapLocationClient.startLocation();
}
}
@Override
public void deactivate() {
locationChangedListener = null;
if (aMapLocationClient != null) {
aMapLocationClient.stopLocation();
aMapLocationClient.onDestroy();
}
aMapLocationClient = null;
}
};
public AMapLocationListener aMapLocationListener = new AMapLocationListener() {
@Override
public void onLocationChanged(final AMapLocation aMapLocation) {
if (locationChangedListener != null && aMapLocation != null) {
if (aMapLocation != null && aMapLocation.getErrorCode() == 0) {
locationChangedListener.onLocationChanged(aMapLocation);
GeocodeSearch geocodeSearch = new GeocodeSearch(context);
LatLonPoint latLonPoint = new LatLonPoint(aMapLocation.getLatitude(),aMapLocation.getLongitude());
RegeocodeQuery query = new RegeocodeQuery(latLonPoint,1000, GeocodeSearch.AMAP);
geocodeSearch.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() {
@Override
public void onRegeocodeSearched (RegeocodeResult regeocodeResult, int i) {
if (i == 0) {
regeocodeResultData.regeoCodeResult(regeocodeResult,aMapLocation);
}
}
@Override
public void onGeocodeSearched (GeocodeResult geocodeResult, int i) {
}
});
geocodeSearch.getFromLocationAsyn(query);
}
}
}
};
public void resultData (RegeocodeResultData regeocodeResultData){
this.regeocodeResultData = regeocodeResultData;
}
}- **关于高德地图的使用,这里写了一个 Helper 类**
---
public class MapHelper {
private static MapHelper mapHelper;
private Context context;
private RegeocodeResultData regeocodeResultData;
private LocationSource.OnLocationChangedListener locationChangedListener;
private AMapLocationClientOption aMapLocationClientOption;
private AMapLocationClient aMapLocationClient;
private int zoomRatio = 18;
private UiSettings uiSettings;
private MapView mapView;
private AMap aMap;
public MapHelper (Context context){
this.context = context.getApplicationContext();
}
public synchronized static MapHelper getInstance (Context context){
if (null == mapHelper){
mapHelper = new MapHelper(context);
}
return mapHelper;
}
public void initMap (MapView mapView){
this.mapView = mapView;
aMap = mapView.getMap();
uiSettings = aMap.getUiSettings();
aMap.setLocationSource(locationSource);
aMap.setMyLocationEnabled(true);
aMap.getUiSettings().setMyLocationButtonEnabled(false);
aMap.moveCamera(CameraUpdateFactory.zoomTo(zoomRatio));
aMap.setMyLocationType(AMap.LOCATION_TYPE_MAP_FOLLOW);
MyLocationStyle style = new MyLocationStyle();
style.myLocationIcon(BitmapDescriptorFactory.fromResource(R.mipmap.own));
style.strokeColor(Color.argb(0, 0, 0, 0));
style.radiusFillColor(Color.argb(0, 0, 0, 0));
style.strokeWidth(1.0f);
aMap.setMyLocationStyle(style);
uiSettings.setZoomControlsEnabled(false);
uiSettings.setMyLocationButtonEnabled(false);
}
public LocationSource locationSource = new LocationSource() {
@Override
public void activate(OnLocationChangedListener onLocationChangedListener) {
locationChangedListener = onLocationChangedListener;
if (aMapLocationClient == null) {
aMapLocationClient = new AMapLocationClient(context);
aMapLocationClientOption = new AMapLocationClientOption();
aMapLocationClient.setLocationListener(aMapLocationListener);
aMapLocationClientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
aMapLocationClient.setLocationOption(aMapLocationClientOption);
aMapLocationClient.startLocation();
}
}
@Override
public void deactivate() {
locationChangedListener = null;
if (aMapLocationClient != null) {
aMapLocationClient.stopLocation();
aMapLocationClient.onDestroy();
}
aMapLocationClient = null;
}
};
public AMapLocationListener aMapLocationListener = new AMapLocationListener() {
@Override
public void onLocationChanged(final AMapLocation aMapLocation) {
if (locationChangedListener != null && aMapLocation != null) {
if (aMapLocation != null && aMapLocation.getErrorCode() == 0) {
locationChangedListener.onLocationChanged(aMapLocation);
GeocodeSearch geocodeSearch = new GeocodeSearch(context);
LatLonPoint latLonPoint = new LatLonPoint(aMapLocation.getLatitude(),aMapLocation.getLongitude());
RegeocodeQuery query = new RegeocodeQuery(latLonPoint,1000, GeocodeSearch.AMAP);
geocodeSearch.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() {
@Override
public void onRegeocodeSearched (RegeocodeResult regeocodeResult, int i) {
if (i == 0) {
regeocodeResultData.regeoCodeResult(regeocodeResult,aMapLocation);
}
}
@Override
public void onGeocodeSearched (GeocodeResult geocodeResult, int i) {
}
});
geocodeSearch.getFromLocationAsyn(query);
}
}
}
};
public void resultData (RegeocodeResultData regeocodeResultData){
this.regeocodeResultData = regeocodeResultData;
}
}