精华内容
下载资源
问答
  • 主要介绍了使用CSS3设计地图上的雷达定位提示效果的实例,即文中所说的水波涟漪效果,能够控制宽高和透明度,需要的朋友可以参考下
  • 调用百度地图实现在地图上定位

    千次阅读 2014-04-20 10:36:59
    下面我说说百度地图上实现定位。 import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView;...

       下面我说说在百度地图上实现定位。

    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    import com.baidu.location.BDLocation;
    import com.baidu.location.BDLocationListener;
    import com.baidu.location.LocationClient;
    import com.baidu.location.LocationClientOption;
    import com.baidu.mapapi.BMapManager;
    import com.baidu.mapapi.map.MapController;
    import com.baidu.mapapi.map.MapView;
    import com.baidu.platform.comapi.basestruct.GeoPoint;
    
    
    public class MainActivity extends Activity {
    	private TextView mTv = null;
    	public LocationClient mLocationClient = null;
    	public MyLocationListenner myListener = new MyLocationListenner();
    	public Button ReLBSButton=null;
    	public static String TAG = "msg";
    	
    	BMapManager mBMapMan = null;
    	MapView mMapView = null;
    
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		//地图
    		mBMapMan=new BMapManager(getApplication());
        	mBMapMan.init(null); 
    		
    		setContentView(R.layout.activity_main);
    		
    		//地图
    		mMapView=(MapView)findViewById(R.id.bmapsView);
        	mMapView.setBuiltInZoomControls(true);  //实现放大缩小地图的功能
        	mMapView.setTraffic(true);     //显示交通状况
        	//mMapView.setSatellite(true);   //显示卫星地图
        	MapController mMapController=mMapView.getController();
    		// 得到mMapView的控制权,可以用它控制和驱动平移和缩放
    		GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6));
    		//用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
        	mMapController.setCenter(point);//设置地图中心点
        	mMapController.setZoom(12);//设置地图zoom级别
    		
    		
    		mTv = (TextView)findViewById(R.id.textview);
    		ReLBSButton=(Button)findViewById(R.id.ReLBS_button);
    		
    		mLocationClient = new LocationClient( getApplicationContext() );
    
    		/**——————————————————————————————————————————————————————————————————
    		 * 这里的AK和应用签名包名绑定,如果使用在自己的工程中需要替换为自己申请的Key
    		 * ——————————————————————————————————————————————————————————————————
    		 */
    //		mLocationClient.setAK("697f50541f8d4779124896681cb6584d");	 
    //		mLocationClient.setAK("z4nqERrqxnhNzT5VOGNVRt80");
    		mLocationClient.registerLocationListener( myListener );
    
    		setLocationOption();//设定定位参数
    		
    		mLocationClient.start();//开始定位
    System.out.println(1);
    		
    		// 重新定位
    		ReLBSButton.setOnClickListener(new Button.OnClickListener() {
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if (mLocationClient != null && mLocationClient.isStarted()){
    					mLocationClient.requestLocation();
    System.out.println(3);			}	
    				else
    					Log.d("msg", "locClient is null or not started");
    			}
    		});
    		
    	} 
    	
    	//设置相关参数
    	private void setLocationOption(){
    		LocationClientOption option = new LocationClientOption();
    		option.setOpenGps(true);
    		option.setAddrType("all");//返回的定位结果包含地址信息
    		option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02
    		option.setScanSpan(50000);//设置发起定位请求的间隔时间为5000ms
    		option.disableCache(true);//禁止启用缓存定位
    		option.setPoiNumber(5);    //最多返回POI个数   
    		option.setPoiDistance(1000); //poi查询距离        
    		option.setPoiExtraInfo(true); //是否需要POI的电话和地址等详细信息        
    		mLocationClient.setLocOption(option);
    		
    	} 
    
    	@Override
    	public void onDestroy() {
    		mLocationClient.stop();//停止定位
    		 mMapView.destroy();
             if(mBMapMan!=null){
                     mBMapMan.destroy();
                     mBMapMan=null;
             }
    		mTv = null;
    		super.onDestroy();
    	}
    
    
    	/**
    	 * 监听函数,有更新位置的时候,格式化成字符串,输出到屏幕中
    	 */
    	public class MyLocationListenner implements BDLocationListener {
    		@Override
    		//接收位置信息
    		public void onReceiveLocation(BDLocation location) {
    			if (location == null)
    				return ;
    			StringBuffer sb = new StringBuffer(256);
    			sb.append("1时间 : ");
    			sb.append(location.getTime());
    			sb.append("\n1return code : ");
    			sb.append(location.getLocType());
    			sb.append("\n1latitude : ");
    			sb.append(location.getLatitude());
    			sb.append("\n1lontitude : ");
    			sb.append(location.getLongitude());
    			sb.append("\n1radius : ");
    			sb.append(location.getRadius());
    System.out.println(2);
    			if (location.getLocType() == BDLocation.TypeGpsLocation){
    				sb.append("\n2speed : ");
    				sb.append(location.getSpeed());
    				sb.append("\n2satellite : ");
    				sb.append(location.getSatelliteNumber());
    			} else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
    				/**
    				 * 格式化显示地址信息
    				 */
    				sb.append("\n3addr : ");
    				sb.append(location.getAddrStr());
    			}
    			sb.append("\n4sdk version : ");
    			sb.append(mLocationClient.getVersion());
    			sb.append("\n4isCellChangeFlag : ");
    			sb.append(location.isCellChangeFlag());
    			mTv.setText(sb.toString());
    			Log.i(TAG, sb.toString()); 
    	mMapView.getController().setCenter(new GeoPoint((int)(29.52* 1E6), (int)(106.57* 1E6)));
    	//mMapView.getController().setZoom(12);
    	mMapView.refresh();
    		}
    		//接收POI信息函数,我不需要POI,所以我没有做处理
    		public void onReceivePoi(BDLocation poiLocation) {
    			if (poiLocation == null) {
    				return;
    			}
    		}
    	}
    
    
    }

    在这段代码里我没有进行实时定位,只是给地图传了一个经纬度在地图上显示而已,东西弄的比较水,看看效果吧


    上面是定位的经纬度想,下面是地图。记住百度定位sdk4.0以上要申请密钥才能使用,还有,密钥不是在程序里给定而是在manifest文件中给定 <meta-data
                android:name="com.baidu.lbsapi.API_KEY"
                android:value="HP3YeKaxrdwZzZCDHC5sR6lo" />

    下面给出manifest文件吧

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.bdgps"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="18" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            
             <meta-data
                android:name="com.baidu.lbsapi.API_KEY"
                android:value="HP3YeKaxrdwZzZCDHC5sR6lo" />
            <activity
                android:name="com.example.bdgps.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
             <service
                android:name="com.baidu.location.f"
                android:enabled="true"
                android:process=":remote" >
            </service>
        </application>
        
        
        
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
        </uses-permission>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
        </uses-permission>
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
        </uses-permission>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
        </uses-permission>
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
        </uses-permission>
        <uses-permission android:name="android.permission.READ_PHONE_STATE" >
        </uses-permission>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
        </uses-permission>
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >
        </uses-permission>
        <uses-permission android:name="android.permission.READ_LOGS" >
        </uses-permission>
        <uses-permission android:name="android.permission.VIBRATE" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
        <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    
    </manifest>
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    在.xml文件中记得定义好mapview,下面给出.xml文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
    
        <TextView 
             android:id="@+id/textview"
            android:layout_width="194dp"
            android:layout_height="wrap_content"
            />
        <Button
            android:id="@+id/ReLBS_button"
            android:layout_width="194dp"
            android:layout_height="wrap_content"
            android:text="Update My Location" />
        
        
         <com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:clickable="true" />
    
            
    </LinearLayout>


    源码下载:http://download.csdn.net/detail/u011833422/7221291

    展开全文
  • 开发移动端 web 或者webapp时,使用百度地图 API 的过程中,经常需要通过手机定位获取当前位置并在地图上居中显示出来,这就需要用到html5的地理定位功能。 复制代码代码如下:navigator.geolocation....
  • 高德地图显示定位地点,设置上下左右边框距离 高德地图显示定位地点,设置上下左右边框距离
  • 开发移动端 web 或者webapp时,使用百度地图 API 的过程中,经常需要通过手机定位获取当前位置并在地图上居中显示出来,这就需要用到html5的地理定位功能。 复制代码代码如下: navigator.geolocation....
  • 地图接口定位

    2018-12-04 17:07:18
    本文设计地图经纬度接口定位接口,开发人员可以根据接口调用共享定位,涉及到地图地图自适应等!!!
  • 用高德地图开发时,遇到了一个问题,即浏览数据的时候需要传现在的坐标获取现在所处坐标附近的数据,并且希望这个定位一直存在着以便更新所处位置,但这样进入地图界面的时候,在地图界面就定不了位了。...

    我在用高德地图开发时,遇到了一个问题,即在浏览数据的时候需要传现在的坐标获取现在所处坐标附近的数据,并且希望这个定位一直存在着以便更新所处位置,但这样进入地图界面的时候,在地图界面就定不了位了。看了下高德文档发现LocationManagerProxy类用了一个单例,也就是说进入地图后如果不将之前定位removeUpdates和destroy掉那么现在获取的对象还是进入地图前那个定位的对象,还是之前的那个定位设置,当然监听也还在之前的那个地方,下面举个例子:

    public class MyApplication extends Application implements AMapLocationListener {
        public LocationManagerProxy mLocationManagerProxy;
        private static MyApplication myApplication;
        public static MyApplication getInstance() //为方便外部获取myapplication对象
            return myApplication;
        }
        @Override
        public void onCreate() {
            // TODO Auto-generated method stub
            super.onCreate();
            myApplication = this;//赋值application
            initLocation();//调用定位
        }
    
        public void initLocation(){
    
            mLocationManagerProxy = LocationManagerProxy.getInstance(this);
    
            //此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
            //注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求
            //在定位结束后,在合适的生命周期调用destroy()方法     
            //其中如果间隔时间为-1,则定位只定一次
            mLocationManagerProxy.requestLocationData(
                    LocationProviderProxy.AMapNetwork, 60*1000, 15, this);
    
            mLocationManagerProxy.setGpsEnable(false);
        }
    
        @Override
        public void onLocationChanged(Location arg0) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onProviderDisabled(String arg0) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onProviderEnabled(String arg0) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void onLocationChanged(AMapLocation arg0) {
            // TODO Auto-generated method stub
    
        }
        public void stopLocation() {//方便地图端停止application处的定位
            if (mLocationManagerProxy != null) {
                mLocationManagerProxy.removeUpdates(this);
                mLocationManagerProxy.destory();
            }
            mLocationManagerProxy = null;
        }

    以上为在application中的定位

    public class MapActivity extends Activity implements LocationSource, AMapLocationListener {
            private AMap aMap;
            private MapView mapView;
            private OnLocationChangedListener mListener;
            private LocationManagerProxy mAMapLocationManager;
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.locationsource_activity);
                mapView = (MapView) findViewById(R.id.map);
                mapView.onCreate(savedInstanceState);
                init();
            }
    
            /**
             * 初始化AMap对象
             */
            private void init() {
                if (aMap == null) {
                    aMap = mapView.getMap();
                    setUpMap();
                }
            }
    
            private void setUpMap() {
                MyApplication.getInstance().stopLocation();//在地图处定位设置之前将MyApplication处的定位removeUpdates和destroy掉
                aMap.setLocationSource(this);// 设置定位监听
                aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示
                aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false
                // 设置定位的类型为定位模式:定位(AMap.LOCATION_TYPE_LOCATE)、跟随(AMap.LOCATION_TYPE_MAP_FOLLOW)
                // 地图根据面向方向旋转(AMap.LOCATION_TYPE_MAP_ROTATE)三种模式
                aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);
            }
    
            /**
             * 此方法需存在
             */
            @Override
            protected void onResume() {
                super.onResume();
                mapView.onResume();
            }
    
            /**
             * 此方法需存在
             */
            @Override
            protected void onPause() {
                super.onPause();
                mapView.onPause();
                deactivate();
            }
    
            /**
             * 此方法需存在
             */
            @Override
            protected void onDestroy() {
                super.onDestroy();
                mapView.onDestroy();
            }
    
            /**
             * 此方法已经废弃
             */
            @Override
            public void onLocationChanged(Location location) {
            }
    
            /**
             * 定位成功后回调函数
             */
            @Override
            public void onLocationChanged(AMapLocation amapLocation) {
                if (mListener != null && amapLocation != null) {
                    if (amapLocation.getAMapException().getErrorCode() == 0) {
                        mListener.onLocationChanged(amapLocation);// 显示系统小蓝点
                    }
                }
            }
    
            /**
             * 激活定位
             */
            @Override
            public void activate(OnLocationChangedListener listener) {
                mListener = listener;
                if (mAMapLocationManager == null) {
                    mAMapLocationManager = LocationManagerProxy.getInstance(this);
                    //此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
                    //注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求
                    //在定位结束后,在合适的生命周期调用destroy()方法     
                    //其中如果间隔时间为-1,则定位只定一次
                    mAMapLocationManager.requestLocationData(
                            LocationProviderProxy.AMapNetwork, 60*1000, 10, this);
                }
            }
    
    
            /**
             * 停止定位
             */
            @Override
            public void deactivate() {
                mListener = null;
                if (mAMapLocationManager != null) {
                    mAMapLocationManager.removeUpdates(this);
                    mAMapLocationManager.destroy();
                    MyApplication.getInstance().initLocation();//停止map处定位后再起启动application处的定位
                }
                mAMapLocationManager = null;
    
            }

    以上为map处的定位。
    综上所述,思路就是在外边定位了,进去之后把外边的停掉,启动map里面的,退出map时,把map里面的停掉,同时启动外边的。这样解决了在外边定位着进去map后在地图上不好定位的问题。

    展开全文
  •  当第一次启动地图时,自动定位到我所在的位置,当第二次定位的时候,保存上次的定位点,这次直接先显示上次定位的地点,然后在定位到我现在所在的位置。 首先看下效果图:  第一次启动软件时的截图:  ...

    要实现的功能要求为:

          当第一次启动地图时,自动定位到我所在的位置,当第二次定位的时候,保存上次的定位点,这次直接先显示上次定位的地点,然后在定位到我现在所在的位置。

    首先看下效果图:

     第一次启动软件时的截图:

                                      

                            初始化时的定位信息

    再次启动定位时的信息截图:

                                     

                                                              以后定位时显示的信息

     

    主要思路:

         这里主要运用到SharedPreferences,android的一种轻型的存储方式。当程序退出时保存上次定位点的信息,当再次启动时,取出定位信息然后进行定位,其次在进行正常的定位功能。

    优点:

            这样可以节省定位时间以及不必要的流量等。

    代码解释:

    复制代码
        @Override
        protected void onDestroy() {
            super.onDestroy();
            if(mapManager != null )
                mapManager.destroy();
            /*退出时保存这次的定位信息*/
            SharedPreferences settings=getSharedPreferences("GeoPoint_Info",0);
            settings.edit().putLong(mStringInitLatitude,mMyPlaceGeoPoint.getLatitudeE6()).commit();
            settings.edit().putLong(mStringInitLongtitude, mMyPlaceGeoPoint.getLongitudeE6()).commit();
            mapManager=null;
        }
    复制代码

           

    复制代码
    @Override
            public void onCreate(Bundle savedInstanceState) {
            /*保存上次定位点以便于下次打开直接定位到该位置*/
            SharedPreferences settings=getSharedPreferences("GeoPoint_Info",MODE_PRIVATE);
            mInitLatitude=settings.getLong(mStringInitLatitude, mInitLatitude);
            Log.d(mStringInitLatitude, ""+mInitLatitude);
            mInitLongtitude=settings.getLong(mStringInitLongtitude, mInitLongtitude);
            Log.d(mStringInitLongtitude, ""+mInitLongtitude);
            
            Toast.makeText(timeLocation.this, "上次位置为:\n"+"经度:"+mInitLatitude+"\n"+"纬度:"+mInitLongtitude+"\n", Toast.LENGTH_LONG).show();
            //mMapView.getController().animateTo(new GeoPoint((int)mInitLatitude,(int)mInitLongtitude));
            mMapView.getController().setCenter(new GeoPoint((int)mInitLatitude,(int)mInitLongtitude));
            }
    复制代码

    哈哈 ,就这样,简单方便的实现了改变默认定位初始点的位置。


    原文地址:点击打开链接

    展开全文
  • 腾讯地图定位

    2017-05-05 14:21:50
    简单实现定位与长按地图设置marker
  • 高德地图定位

    千次阅读 2017-08-02 15:47:52
    高德地图的使用(二)定位定位显示地图过后,就是进行定位,这里我将介绍如何实现定位功能,以及如何改变定位的小图标实现定位功能定位功能基本有两种展现形式,一种是在地图上展示定位图标,另一种是自动定位并显示...

    高德地图的使用(二)定位

    定位

    显示地图过后,就是进行定位,这里我将介绍如何实现定位功能,以及如何改变定位的小图标

    实现定位功能

    定位功能基本有两种展现形式,一种是在地图上展示定位图标,另一种是自动定位并显示地点名称

    参考文档

    在地图上展示定位图标

     private MyLocationStyle myLocationStyle = new MyLocationStyle();    //初始化定位蓝点样式类
    
        //声明AMapLocationClient类对象
        public AMapLocationClient mLocationClient = null;
        //声明AMapLocationClientOption对象
        public AMapLocationClientOption mLocationOption = null;
    
          //初始化AMapLocationClientOption对象
            mLocationOption = new AMapLocationClientOption();
            //初始化定位
            mLocationClient = new AMapLocationClient(getApplicationContext());
    
            //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
            mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
    
            //连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。
            //myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
    
            myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE);//定位一次,且将视角移动到地图中心点。
    
    //        myLocationStyle.interval(2000); //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
    
            aMap.setMyLocationStyle(myLocationStyle);//设置定位蓝点的Style
          aMap.getUiSettings().setMyLocationButtonEnabled(true);//设置默认定位按钮是否显示,非必需设置。
            aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。
    
    
            //获取一次定位结果:该方法默认为false。
            mLocationOption.setOnceLocation(true);
    
            //获取最近3s内精度最高的一次定位结果:
            //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。
            mLocationOption.setOnceLocationLatest(true);
    
            //给定位客户端对象设置定位参数
            mLocationClient.setLocationOption(mLocationOption);
            //启动定位
            mLocationClient.startLocation();
    

    实现接口AMapLocationListener,设置定位回调监听

     mLocationClient.setLocationListener(this);

    高德定位回调

        @Override
        public void onLocationChanged(AMapLocation aMapLocation) {
            if (aMapLocation != null) {
                if (aMapLocation.getErrorCode() == 0) {
                    Double latitude = aMapLocation.getLatitude();
                    Double longitude = aMapLocation.getLongitude();
                    Log.d("888", "纬度=" + latitude + "精度=" + longitude);
                    LatLng location = new LatLng(latitude, longitude);
                    aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 18));
                } else {
                    //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
                    Log.e("AmapError", "location Error, ErrCode:"
                            + aMapLocation.getErrorCode() + ", errInfo:"
                            + aMapLocation.getErrorInfo());
                }
            }
        }

    到这里在地图上就会出现一个有着默认图标的定位点

    需要注意的是:

    Battery_Saving
    低功耗模式,将只使用高德网络定位

    Device_Sensors
    仅设备(Gps)模式,不支持室内环境的定位

    Hight_Accuracy
    高精度模式,将同时使用高德网络定位和GPS定位,优先返回精度高的定位

    一般使用的都是高精度模式,还是看个人需求吧。

    另一个需要注意的就是

    myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);

    这个是连续定位,不好的地方就是如果你在地图上想滑到定位之外的地方,位置会立刻回到定位的地方。

    屏幕缩放比

    LatLng location = new LatLng(latitude, longitude);
    aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 18));

    最后一点要注意的是:

    //获取一次定位结果:该方法默认为false。

    mLocationOption.setOnceLocation(true);

    如果想多次定位,要将这个设为false

    更改默认图标

    设置圆圈的颜色

     private static final int STROKE_COLOR = Color.argb(180, 3, 145, 255);
     private static final int FILL_COLOR = Color.argb(10, 0, 0, 180);

    更改图标

    myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(this.getResources(),
                    R.mipmap.navi_map_gps_locked)));
      //可以根据自己的需要更改图标图片
            myLocationStyle.anchor(0.5f, 0.5f);
            //精度圈颜色自定义
            myLocationStyle.strokeColor(STROKE_COLOR);//设置定位蓝点精度圆圈的边框颜色的方法。
            myLocationStyle.radiusFillColor(FILL_COLOR); //设置定位蓝点精度圆圈的填充颜色的方法。
    

    最后在onDestroy中设置

    if (null != mLocationClient) {
      mLocationClient.onDestroy();//销毁定位客户端,同时销毁本地定位服务。
    }
    

    navi_map_gps_locked样子

    navi_map_gps_locked

    总体代码:

    public class ShowMapActivity extends Activity implements AMapLocationListener {
        private static final int STROKE_COLOR = Color.argb(180, 3, 145, 255);
        private static final int FILL_COLOR = Color.argb(10, 0, 0, 180);
    
        private AMap aMap;  //初始化地图控制器对象
        private MapView mMapView;
    
        private MyLocationStyle myLocationStyle = new MyLocationStyle();    //初始化定位蓝点样式类
    
        //声明AMapLocationClient类对象
        public AMapLocationClient mLocationClient = null;
        //声明AMapLocationClientOption对象
        public AMapLocationClientOption mLocationOption = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_showmap);
            initView();
            mMapView.onCreate(savedInstanceState);
            initMap();
            setListener();
        }
    
        private void initView() {
            mMapView = (MapView) findViewById(R.id.map);
        }
    
        private void initMap() {
    
            if (aMap == null) {
                aMap = mMapView.getMap();
            }
            //初始化AMapLocationClientOption对象
            mLocationOption = new AMapLocationClientOption();
            //初始化定位
            mLocationClient = new AMapLocationClient(getApplicationContext());
    
            //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
            mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
    
            //连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。
    //        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
    
            myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE);//定位一次,且将视角移动到地图中心点。
    //        myLocationStyle.interval(2000); //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
            showIcon();
            aMap.setMyLocationStyle(myLocationStyle);//设置定位蓝点的Style
    //        aMap.getUiSettings().setMyLocationButtonEnabled(true);//设置默认定位按钮是否显示,非必需设置。
            aMap.setMyLocationEnabled(true);// 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。
    
    
            //获取一次定位结果:该方法默认为false。
            mLocationOption.setOnceLocation(true);
    
            //获取最近3s内精度最高的一次定位结果:
            //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。
            mLocationOption.setOnceLocationLatest(true);
    
            //给定位客户端对象设置定位参数
            mLocationClient.setLocationOption(mLocationOption);
            //启动定位
            mLocationClient.startLocation();
        }
    
        private void setListener() {
            mLocationClient.setLocationListener(this);
        }
    
        /**
         * 绘制小蓝点图标
         */
        private void showIcon() {
            myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(this.getResources(),
                    R.mipmap.navi_map_gps_locked)));
            myLocationStyle.anchor(0.5f, 0.5f);
            myLocationStyle.strokeColor(STROKE_COLOR);//设置定位蓝点精度圆圈的边框颜色的方法。
            myLocationStyle.radiusFillColor(FILL_COLOR); //设置定位蓝点精度圆圈的填充颜色的方法。
        }
    
    
        /**
         * 高德定位回调
         */
        @Override
        public void onLocationChanged(AMapLocation aMapLocation) {
            if (aMapLocation != null) {
                if (aMapLocation.getErrorCode() == 0) {
                    Double latitude = aMapLocation.getLatitude();
                    Double longitude = aMapLocation.getLongitude();
                    Log.d("888", "纬度=" + latitude + "精度=" + longitude);
                    LatLng location = new LatLng(latitude, longitude);
                    aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 18));
                } else {
                    //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
                    Log.e("AmapError", "location Error, ErrCode:"
                            + aMapLocation.getErrorCode() + ", errInfo:"
                            + aMapLocation.getErrorInfo());
                }
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
            mMapView.onDestroy();
            if (null != mLocationClient) {
                mLocationClient.onDestroy();//销毁定位客户端,同时销毁本地定位服务。
            }
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
            mMapView.onResume();
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
            mMapView.onPause();
            mLocationClient.stopLocation();//停止定位后,本地定位服务并不会被销毁
        }
    
        @Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
            mMapView.onSaveInstanceState(outState);
        }
    
    
    }
    

    自动定位并显示地点名称

    需要设置的跟上面差不多

    总体代码

    public class ShowLocationActivity extends Activity implements AMapLocationListener{
        //声明AMapLocationClient类对象
        public AMapLocationClient mLocationClient = null;
        //声明AMapLocationClientOption对象
        public AMapLocationClientOption mLocationOption = null;
    
        private TextView mTvLocation;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_location);
            initView();
            initLocation();
        }
    
        private void initLocation() {
            //初始化AMapLocationClientOption对象
            mLocationOption = new AMapLocationClientOption();
            //初始化定位
            mLocationClient = new AMapLocationClient(getApplicationContext());
            //设置定位监听
            mLocationClient.setLocationListener(this);
            //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
            mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
            //获取一次定位结果:该方法默认为false。
            mLocationOption.setOnceLocation(true);
            //获取最近3s内精度最高的一次定位结果:
            //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。
            mLocationOption.setOnceLocationLatest(true);
            //给定位客户端对象设置定位参数
            mLocationClient.setLocationOption(mLocationOption);
            //启动定位
            mLocationClient.startLocation();
        }
    
        private void initView() {
            mTvLocation = (TextView) findViewById(R.id.tv_showLocation);
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            if (null != mLocationClient) {
                mLocationClient.onDestroy();//销毁定位客户端,同时销毁本地定位服务。
            }
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            mLocationClient.stopLocation();//停止定位后,本地定位服务并不会被销毁
        }
    
        @Override
        public void onLocationChanged(AMapLocation aMapLocation) {
            if (aMapLocation != null) {
                if (aMapLocation.getErrorCode() == 0) {
                    //显示你想显示的
                    mTvLocation.setText(aMapLocation.getAddress());
                } else {
                    //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
                    Log.e("AmapError", "location Error, ErrCode:"
                            + aMapLocation.getErrorCode() + ", errInfo:"
                            + aMapLocation.getErrorInfo());
                }
            }
        }
    }
    

    可以获得的内容

    //定位成功回调信息,设置相关消息
                amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
                amapLocation.getLatitude();//获取纬度
                amapLocation.getLongitude();//获取经度
                amapLocation.getAccuracy();//获取精度信息
                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                Date date = new Date(amapLocation.getTime());
              df.format(date);//定位时间
                amapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。
                amapLocation.getCountry();//国家信息
                amapLocation.getProvince();//省信息
                amapLocation.getCity();//城市信息
                amapLocation.getDistrict();//城区信息
                amapLocation.getStreet();//街道信息
              amapLocation.getStreetNum();//街道门牌号信息
                amapLocation.getCityCode();//城市编码
                amapLocation.getAdCode();//地区编码
              amapLocation.getAOIName();//获取当前定位点的AOI信息

    到此定位功能就完成了

    展开全文
  • 地图定位

    2016-10-10 11:21:39
    Ø 知识点:注册服务、定位权限、监听、地图UI及相关参数设置 ...3. 地图自带图标、缩放工具条等设计以及设置相关定位选项 /** 定位地图定位功能 */ setUpMapLocation(); private void setUpMa
  • 从事安卓开发这些年,做过很多次手机定位地图操作等,用过百度地图 google地图 高德地图,以我这些年的实践经验来看(有些大言不惭),高德地图做的真的是最人性话 ,最好集成的。 下面贴一下高德地图定位和...
  • 百度地图__定位显示在地图上

    千次阅读 2014-07-07 15:10:20
     - 设置用户自定义定位图标,可以为 null 定义BaiduMap使用 BaiduMap baiduMap.setMyLocationConfigeration(MyLocationConfigeration LocConfig);  3)BaiduMap.setMyLocationConfigeration  百度Key ...
  • 百度地图API销售网点定位代码是一款百度地图API设置企业销售网点分布地图实例,第一步请先去申请你自己的百度密钥,第二步定位你的省市网点。
  •  由图可以看出,我们在地图上添加了主页、定位、鹰眼图以及比例尺控件,下面将详细介绍如何添加: 1 主页按钮的添加 添加主页按钮的前提是我们要创建一个存放主页按钮的div标签,并设置它的样式,比如位置、...
  • wpf获取gps数据在地图上显示定位

    千次阅读 2017-04-13 11:00:40
    1.gps数据换算成正常经纬度值, 换算公式:GPS获取数据为 3958.472727,N,11619.957711,E ...2.利用百度或高德地图JSAPI编写html文件; 参考文件如下:<!DOCTYPE html> <meta http-equiv="Conten
  • 04 百度地图上定位到当前位置,并用大头针进行标注
  • //保存手机定位信息轮询setInterval的id var isFirstQuery = null;//定义一个变量保存是否是第一次查询 var ulm_Layer = null;//手机定位信息图层变量 var ulm_queryResult = null;//保存手机定位信息查询结果的...
  • 定位几乎是所有LBS应用必备的一个功能,本文就来讲述一下,百度地图定位功能的实现。有关基本地图的实现请参考 【iOS百度地图系列_0】百度地图的配置及实现基本地图。 1.用到的代理   2.vieDidLoad中 //...
  • 用高德地图定位SDK写了一个定位的程序 但是真机运行的时候 public void onLocationChanged(AMapLocation amapLocation) 这个定位监听回调方法里、我从amapLocation里获得经纬度 然后写到logcat里、...
  • 百度地图定位

    2013-05-13 09:08:22
    地图完成了自我位置的定位和周边搜索 mBMapMan = new BMapManager(getApplication()); mBMapMan.init(mKey, null); mBMapMan.getLocationManager().setNotifyInternal(10, 3) ; // 如果使用地图SDK,请初始化...
  • 1、开发背景 2、开发环境 2.1基础开发环境 2.2百度地图环境 2.3高德地图环境 ...由于公司开发安卓项目时,需要用到定位功能,所以需要选择定位精度高的地图SDK。现在将市面应用最广泛的三家...
  • /*将当前位置显示在地图上*/ private void navigateTo(BDLocation location){ if(isFirstLocate){ // /*获取经纬度*/ LatLng latLng = new LatLng(location .getLatitude (),location .getLongitude ()) ; ...
  • height: 100%;margin:0;font-family:"微软雅黑";} #allmap{height:500px;width:100%;... 城市名定位 // 百度地图API功能 var map = new BMap.Map("allmap");// 创建Map实例 map.centerAndZoom(ne
  • 本文设计了一套基于Android4.4和百度地图的远程定位系统。首先利用注册机制,构建一个由5个线程和3个消息队列组成的支持多用户同时使用的服务器系统,然后针对Android4.4版本特点,阐述了如何使用Looper机制进行消息...
  • 地图定位开发

    千次阅读 2015-02-03 10:13:01
    iOS开发系列--地图定位 概览 现在很多社交、电商、团购应用都引入了地图定位功能,似乎地图功能不再是地图应用和导航应用所特有的。的确,有了地图定位功能确实让我们的生活更加丰富多彩,极...
  • 谷歌地图定位

    2013-05-10 22:42:10
    基于android地图定位设计与开发,谷歌地图反馈数据开发。
  • 用html5的地理定位功能通过手机定位获取当前位置并在地图上居中显示出来,下面是百度地图API的使用过程,有需要的朋友可以参考下
  • 而我在自己写的app中,使用百度地图定位sdk,用的是全量定位,是最新版的7.0,地图用4.1,在同样的条件下,误差接近1公里。请问这是怎么回事呢? 以下是我的与定位有关的代码 ``` class ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,251
精华内容 26,100
关键字:

如何在地图上设置自己的定位