zoukankan      html  css  js  c++  java
  • 百度地图定位

    package com.baidu.riako10;

    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.BitmapDescriptor;
    import com.baidu.mapapi.map.BitmapDescriptorFactory;
    import com.baidu.mapapi.map.MapStatus;
    import com.baidu.mapapi.map.MapStatusUpdateFactory;
    import com.baidu.mapapi.map.MapView;
    import com.baidu.mapapi.map.MarkerOptions;
    import com.baidu.mapapi.map.MyLocationData;
    import com.baidu.mapapi.map.OverlayOptions;
    import com.baidu.mapapi.model.LatLng;

    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.widget.Toast;

    public class MainActivity extends Activity {

        private MapView mapView;
        private BaiduMap baiduMap;
        private LocationClient mLocClient;
        private BDLocationListener myListener=new myListener();
        boolean isFirstLoc = true; // 是否首次定位
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
         // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
            // 注意该方法要再setContentView方法之前实现
            SDKInitializer.initialize(getApplicationContext());
            setContentView(R.layout.activity_main);
            //找到相应的控件
            mapView = (MapView) findViewById(R.id.bmapView);
            baiduMap = mapView.getMap();
            
            // 开启定位图层
            baiduMap.setMyLocationEnabled(true);
            // 定位初始化
            mLocClient = new LocationClient(this);
            mLocClient.registerLocationListener(myListener);
            LocationClientOption option = new LocationClientOption();
            option.setOpenGps(true); // 打开gps
            option.setCoorType("bd09ll"); // 设置坐标类型
            option.setScanSpan(1000);//扫描时间
            mLocClient.setLocOption(option);
            mLocClient.start();
            
            //定义Maker坐标点  
            LatLng point = new LatLng(39.963175, 116.400244);  
            //构建Marker图标  
            BitmapDescriptor bitmap = BitmapDescriptorFactory  
                .fromResource(R.drawable.icon_marka);  
            //构建MarkerOption,用于在地图上添加Marker  
            OverlayOptions option2 = new MarkerOptions()  
                .position(point)  
                .icon(bitmap);  
            //在地图上添加Marker,并显示  
            baiduMap.addOverlay(option2);
        }
        
          
        class myListener implements BDLocationListener{
            @Override
            public void onReceiveLocation(BDLocation location) {
                
                //定义Maker坐标点  
                LatLng point = new LatLng(location.getLatitude(), location.getLongitude());  
                //构建Marker图标  
                BitmapDescriptor bitmap = BitmapDescriptorFactory  
                    .fromResource(R.drawable.icon_marka);  
                //构建MarkerOption,用于在地图上添加Marker  
                OverlayOptions option2 = new MarkerOptions()  
                    .position(point)  
                    .icon(bitmap);  
                //在地图上添加Marker,并显示  
                baiduMap.addOverlay(option2);
                
                
                // map view 销毁后不在处理新接收的位置
                if (location == null || mapView == null) {
                    return;
                }
                MyLocationData locData = new MyLocationData.Builder()
                        .accuracy(location.getRadius())//得到定位区域的半径
                                // 此处设置开发者获取到的方向信息,顺时针0-360
                        .direction(100).latitude(location.getLatitude())
                        .longitude(location.getLongitude()).build();
                baiduMap.setMyLocationData(locData);
                if (isFirstLoc) {
                    isFirstLoc = false;
                    LatLng ll = new LatLng(location.getLatitude(),
                            location.getLongitude());
                    MapStatus.Builder builder = new MapStatus.Builder();
                    builder.target(ll).zoom(18.0f);
                    baiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
                }
            }
            
        
        }
        @Override
        protected void onPause() {
            mapView.onPause();
            super.onPause();
        }

        @Override
        protected void onResume() {
            mapView.onResume();
            super.onResume();
        }

        @Override
        protected void onDestroy() {
            // 退出时销毁定位
            mLocClient.stop();
            // 关闭定位图层
            baiduMap.setMyLocationEnabled(false);
            mapView.onDestroy();
            mapView = null;
            super.onDestroy();
        }
        
        
    }
    //////////////////////////////////权限///////////////////////////////////////////////////////////////////////////

     <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
        <!-- 这个权限用于进行网络定位 -->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <!-- 这个权限用于访问GPS定位 -->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <!-- 用于读取手机当前的状态 -->
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <!-- 访问网络,网络定位需要上网 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />


            <meta-data  
            android:name="com.baidu.lbsapi.API_KEY"  
            android:value="WH0Rsu939XtMGGeABQYpPZSwvDWkKvnV" />

     <service
                android:name="com.baidu.location.f"
                android:enabled="true"
                android:process=":remote" >
            </service>

  • 相关阅读:
    Python 爬虫
    Web 前端编程运维必备
    Docker 运维高级应用管理
    Python 运维之路
    Linux 运维之路
    8086汇编 中断
    8086汇编 rep 指令
    8086汇编 cmp 指令
    8089汇编 标志寄存器
    8086汇编 call 指令
  • 原文地址:https://www.cnblogs.com/1995yu/p/5413138.html
Copyright © 2011-2022 走看看