Android 百度 Map----定位功能

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();

    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package xgpushdemo.qt.an.appmap; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MyLocationData; /*** * 百度定位、导航 * */ public class MainActivity extends Activity { private Button clickbtn; private TextView txt1; private TextView txt2; private MapView mMapView = null; private BaiduMap mBaiduMap=null; //定位相关申明 private LocationClient locationClient; //是否第一次定位 private Boolean isFirstloc=true; //是否开启 private Boolean isStart=true; private String la; private String lo; private String city; public BDLocationListener myListener=new BDLocationListener() { @Override public void onReceiveLocation(BDLocation bdLocation) { if(bdLocation==null||mMapView==null) return; MyLocationData myLocationData= new MyLocationData.Builder().accuracy(bdLocation.getRadius()).direction(100). latitude(bdLocation.getLatitude()).longitude(bdLocation.getLongitude()).build(); mBaiduMap.setMyLocationData(myLocationData); city= bdLocation.getCity(); la=bdLocation.getLatitude()+""; lo=bdLocation.getLongitude()+""; // if(isFirstloc){ // isFirstloc=false; // LatLng ll=new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude()); // MapStatusUpdate mapStatusUpdate= MapStatusUpdateFactory.newLatLngZoom(ll,16); // mBaiduMap.animateMapStatus(mapStatusUpdate); // } } };

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值