高德地图定位

package com.example.gaoegps;


import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;


import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.location.LocationManagerProxy;
import com.amap.api.location.LocationProviderProxy;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdate;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.LocationSource;
import com.amap.api.maps.UiSettings;
import com.amap.api.maps.LocationSource.OnLocationChangedListener;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.CameraPosition;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;


public class LocationActivity extends Activity implements LocationSource,AMapLocationListener {


private MapView mapView;
private AMap aMap;
private OnLocationChangedListener listener;
private LocationManagerProxy proxy;
private UiSettings uiSettings;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location);
mapView=(MapView) findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
init();

}
private void init() {
if(aMap==null){
aMap=mapView.getMap();
aMap.setLocationSource(this);//设置定位监听
//设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false
aMap.setMyLocationEnabled(false);
uiSettings = aMap.getUiSettings();
//设置默认定位按钮是否显示
uiSettings.setMyLocationButtonEnabled(true);

CameraUpdate cc = CameraUpdateFactory.newCameraPosition(new CameraPosition(new LatLng(40.043212,116.299728), 16, 0, 30));
aMap.moveCamera(cc);
// 设置定位的类型为定位模式:定位(AMap.LOCATION_TYPE_LOCATE)、跟随(AMap.LOCATION_TYPE_MAP_FOLLOW)
       // 地图根据面向方向旋转(AMap.LOCATION_TYPE_MAP_ROTATE)三种模式
aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);
// drawMarkers();
}

}




private void drawMarkers() {

MarkerOptions options=new MarkerOptions()
.position(new LatLng(40.043212,116.299728))
.title("八纬学校")
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)).draggable(true);

Marker marker = aMap.addMarker(options);
marker.showInfoWindow();







}


@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mapView.onDestroy();
deactivate();
}


@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
mapView.onPause();
}


@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
mapView.onResume();
}


@Override
public 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;
}




@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub


}


@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}


@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}


@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub

}


/*

* 定位成功后回掉
* 显示小蓝点
* */
@Override
public void onLocationChanged(AMapLocation arg0) {
// TODO Auto-generated method stub
if(listener!=null&&arg0!=null){
if(arg0.getAMapException().getErrorCode()==0){
listener.onLocationChanged(arg0);


double latitude = arg0.getLatitude();
double longitude = arg0.getLongitude();

LatLng pos=new LatLng(latitude, longitude);
CameraUpdate cu2 = CameraUpdateFactory.changeLatLng(pos);
aMap.moveCamera(cu2);

MarkerOptions markerOptions=new MarkerOptions();
markerOptions.position(pos);
markerOptions.title(arg0.getAddress());
/*markerOptions.icon(BitmapDescriptorFactory.defaultMarker
(BitmapDescriptorFactory.HUE_RED));*/
// markerOptions.draggable(true);
Marker marker = aMap.addMarker(markerOptions);
marker.showInfoWindow();



CameraUpdate cu1 = CameraUpdateFactory.zoomTo(14);
aMap.moveCamera(cu1);
CameraUpdate tilt = CameraUpdateFactory.changeTilt(30);
aMap.moveCamera(tilt);


Log.e("Main", arg0.getAddress()+"");
}
}
}


/*
* 激活定位
* */
@Override
public void activate(OnLocationChangedListener arg0) {
// TODO Auto-generated method stub
listener=arg0;
if(proxy==null){
proxy=LocationManagerProxy.getInstance(this);
//此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
            //注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求
            //在定位结束后,在合适的生命周期调用destroy()方法     
            //其中如果间隔时间为-1,则定位只定一次
proxy.requestLocationData(LocationProviderProxy.AMapNetwork
, 60000, 10, this);
}


}


/*
* 停止定位
* */
@Override
public void deactivate() {
listener=null;
if(proxy!=null){
proxy.removeUpdates(this);
proxy.destroy();
}
proxy=null;
}







}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值