`
knight_black_bob
  • 浏览: 858104 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android location lbs baidu 定位 划线

阅读更多

 

 

 

 

 

 

 

需要精确 定位 及划线 算法 ~~~ 求 大神 搭救 ---

 



 

 

 

 

 

 

 

 

package com.curiousby.demo.running;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
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.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.MyLocationConfiguration;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.Polyline;
import com.baidu.mapapi.map.PolylineOptions;
import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng; 
import com.curiousby.demo.BaiduLBSUtil;
import com.curiousby.demo.R; 

public class RunningMainFragment extends Fragment {

	// 定位相关
    LocationClient mLocClient;
    public MyLocationListenner myListener = new MyLocationListenner();
	MapView mMapView = null; 
	BaiduMap mBaiduMap;
	
	private LocationMode mCurrentMode;
	//BitmapDescriptor mCurrentMarker;
	private View mBaseView;
	Polyline mPolyline;
	Polyline mColorfulPolyline;
	Polyline mTexturePolyline;
	 boolean isFirstLoc = true; // 是否首次定位
	  private static final int accuracyCircleFillColor = 0xAAFFFF88;
	    private static final int accuracyCircleStrokeColor = 0xAA00FF00;
	static BitmapDescriptor mGreenTexture ;
	 
	private double mLatitude;
	private double mLongitude; 
	private long mTime;
	
	private double currentLatitude;
	private double currentLongitude;
	private long currentTime;
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		SDKInitializer.initialize(getActivity().getApplicationContext());
		 mCurrentMode = LocationMode.FOLLOWING;
		//mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);
		 mGreenTexture = BitmapDescriptorFactory.fromAsset("icon_road_green_arrow.png");
        mBaseView =  LayoutInflater.from(getActivity()).inflate(R.layout.running_tab_main,null);
		mMapView = (MapView) mBaseView.findViewById(R.id.bmapView);
		mBaiduMap = mMapView.getMap();
		// mCurrentMarker = BitmapDescriptorFactory .fromResource(R.drawable.icon_geo);
		 mBaiduMap  .setMyLocationConfigeration(new MyLocationConfiguration(  mCurrentMode, true, null));
        // 开启定位图层
        mBaiduMap.setMyLocationEnabled(true);
        // 定位初始化
        mLocClient = new LocationClient(getActivity().getApplicationContext());
        mLocClient.registerLocationListener(myListener);
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); // 打开gps
        option.setCoorType("bd09ll"); // 设置坐标类型
        option.setScanSpan(2000);
        mLocClient.setLocOption(option);
        mLocClient.start();
		return mBaseView;
	}

	 
	
	
	 public class MyLocationListenner implements BDLocationListener {

	        @Override
	        public void onReceiveLocation(BDLocation location) {
	            // map view 销毁后不在处理新接收的位置
	            if (location == null || mMapView == null) {
	                return;
	            }
	            currentLatitude = location.getLatitude();
            	currentLongitude = location.getLongitude();
            	currentTime = new Date().getTime();
            	if(currentLatitude==4.9E-324||currentLatitude==4.9E-324){  
	            	return ;
	            }
            	
	            MyLocationData locData = new MyLocationData.Builder()
	                    .accuracy(location.getRadius())
	                            // 此处设置开发者获取到的方向信息,顺时针0-360
	                    .direction(100)
	                    .latitude(currentLatitude)
	                    .longitude(currentLongitude)
	                    .build();
	            mBaiduMap.setMyLocationData(locData);
	            
	            
 	            if(mLatitude == 0.0|| mLongitude ==0.0){
            		//return ;	
	            }else{
	            	 LatLng p1 = new LatLng(mLatitude, mLongitude);
	                 LatLng p2 = new LatLng(currentLatitude,currentLongitude ); 
	                 double distance = BaiduLBSUtil.getDistance(p1, p2);
	                 double  speed =distance / (currentTime - mTime == 0 ? 1:(currentTime - mTime )/1000);
	                 Log.e("baoyou", speed + "");
	                 
	                 if (    speed > 10) {
						return ;
					 } 
	                 List<LatLng> points = new ArrayList<LatLng>();
	                 points.add(p1);
	                 points.add(p2); 
	                 OverlayOptions ooPolyline11 = new PolylineOptions().width(10)
	                         .points(points).dottedLine(true).customTexture(mGreenTexture);
	                 mTexturePolyline = (Polyline) mBaiduMap.addOverlay(ooPolyline11);
	                
	            }    
	            
	            mLatitude  = currentLatitude;
	            mLongitude = currentLongitude;  
	            mTime = currentTime;
	            
	            Toast.makeText(getActivity().getApplication(), " currentLatitude =-"+currentLatitude +"currentLongitude =-"+currentLongitude , Toast.LENGTH_SHORT ).show();
				
	            Log.e("baoyou", "currentLatitude =-"+currentLatitude +"currentLongitude =-"+currentLongitude);
	            
	            if (isFirstLoc) {
	                isFirstLoc = false;
                LatLng ll = new LatLng(currentLatitude,currentLongitude);
                MapStatus.Builder builder = new MapStatus.Builder();
                builder.target(ll).zoom(18.0f);
                mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
	            }
	        }

	        public void onReceivePoi(BDLocation poiLocation) {
	        }
	    }

	  

	 @Override
	public void onPause() {
	        mMapView.onPause();
	        super.onPause();
	    }

	    @Override
		public void onResume() {
	        mMapView.onResume();
	        super.onResume();
	    }

	    @Override
		public void onDestroy() {
	        // 退出时销毁定位
	        mLocClient.stop();
	        // 关闭定位图层
	        mBaiduMap.setMyLocationEnabled(false);
	        mMapView.onDestroy();
	        mGreenTexture.recycle();
	        mMapView = null;
	        
	        super.onDestroy();
	    }

}

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.curiousby.demo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk  android:minSdkVersion="9" android:targetSdkVersion="18" />

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
    <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.GET_TASKS" />  
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.curiousby.demo.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>
        <activity android:name="com.curiousby.demo.running.RunningMainActivity"></activity>
        
        <service android:name="com.baidu.location.f"  android:enabled="true" android:process=":remote" >  </service>
        <meta-data   android:name="com.baidu.lbsapi.API_KEY"   android:value="gubKYsssq9ePIdVpBhz0VBfwx2PoMoYr" />
    
    
    </application>

</manifest>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

 

 

  • 大小: 297 KB
  • 大小: 297 KB
0
0
分享到:
评论

相关推荐

    Android Wifi Lbs 定位

    下面将详细介绍Android WiFi LBS定位的工作原理、实现过程以及相关的技术细节。 1. 工作原理: Android WiFi LBS定位主要依赖于两部分数据:一是设备周围的WiFi接入点(Access Point, AP)的MAC地址和信号强度;二...

    android基于GPS和LBS定位

    在Android平台上,基于GPS(全球定位系统)和LBS(Location-Based Services,位置服务)的定位技术是开发移动应用中的重要组成部分。这两种定位方式都旨在获取设备的地理位置信息,但它们的工作原理、精度和适用场景...

    Android-Android定位基于百度基础定位sdk封装

    本项目“Android-Android定位基于百度基础定位sdk封装”提供了一个方便开发者使用的Android定位解决方案,它基于百度地图SDK进行封装,简化了集成过程,使得开发者能够更快速地实现定位功能。 首先,我们需要了解...

    android location 位置定位

    Google Play服务提供的Fused Location Provider API是Android定位服务的推荐方式。它能融合多种定位源,提供更高效、节能的定位体验。`LocationServices.FusedLocationApi`提供了便捷的接口来请求位置更新,并且...

    Android-BDLocationUtil百度地图定位工具类

    在AndroidManifest.xml文件中,必须添加访问GPS和网络定位的权限,如`&lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt;`和`&lt;uses-permission android:name="android.permission.ACCESS_...

    Android开发之百度地图定位打卡

    在Android开发中,集成百度地图并实现定位打卡功能是一项常见的需求。这涉及到多个技术点,包括Android SDK的使用、百度地图API的集成、位置服务的开启与管理、地图的显示与交互、以及自定义打卡逻辑等。下面我们将...

    android 基于百度定位

    在Android应用开发中,集成百度地图API进行定位是常见的需求,尤其对于提供地理位置服务的应用来说至关重要。本项目“android基于百度定位”旨在演示如何在Android应用程序中实现这一功能。通过学习这个实例,开发者...

    android百度定位代码

    在Android平台上实现百度定位功能,是一项常见的需求,尤其在开发地图相关或位置服务的应用时。以下将详细讲解如何在Android项目中集成并使用百度定位SDK,实现精准的地理位置获取。 首先,我们需要创建一个新的...

    百度LBS平台Android定位功能开发源码(简单Demo)

    通过对这个Demo的代码学习,你可以了解如何在实际项目中集成百度LBS定位功能。 总结来说,百度LBS平台为Android开发者提供了高效、易用的定位服务。通过简单的几步配置和代码编写,就可以实现在应用中获取用户的...

    Android版百度定位、腾讯定位、高德定位三者混合

    本项目"Android版百度定位、腾讯定位、高德定位三者混合"提供了一种混合定位模式,结合了百度、腾讯和高德三家主流地图服务商的定位API,旨在为开发者提供更灵活、高效的定位解决方案。 ### 1. 定位原理 定位主要...

    Android 百度地图获取定位信息并实时传给后台

    在Android应用开发中,利用百度地图API获取用户的...通过以上步骤,我们可以实现Android应用利用百度地图获取定位信息,并实时传送给后台服务器。注意,在实际开发中,需要根据具体需求和规范对代码进行调整和优化。

    Android studio 百度地图定位

    在Android开发中,集成百度地图是一项常见的需求,用于实现定位、导航等功能。本文将深入讲解如何在Android Studio中使用百度地图API实现定位功能,并提供关键步骤的详细说明。 首先,你需要在百度地图开放平台...

    Android源码使用百度定位和车联网天气查询

    在Android开发中,集成百度定位服务和车联网天气查询功能是常见的需求,这有助于提升应用程序的实用性和用户体验。本文将深入探讨如何在Android项目中实现这两个功能,并提供相关的代码示例。 首先,我们要介绍的是...

    Android版百度地图定位自己位置

    在Android平台上,百度地图是一款广泛使用的地图应用,它提供了丰富的功能,包括但不限于定位、导航、路线规划等。本文将深入探讨如何在Android版百度地图中定位自己的位置,并切换卫星图和普通地图图层。 首先,要...

    android读取JSON数据在百度地图上画线

    本项目"android读取JSON数据在百度地图上画线"提供了一个实际的示例,展示如何使用Android Studio处理JSON数据并在百度地图API上绘制多条折线覆盖物。以下是该项目涉及的关键知识点: 1. **Android Studio**: ...

    Android百度定位

    在Android开发中,百度定位服务是一个常用的功能,它允许开发者集成到自己的应用中,以便获取用户的精确位置信息。本文将详细讲解如何在Android项目中使用百度定位服务,包括配置、集成以及基本的使用方法。 首先,...

    LBS基站定位完整源码(分为客户端和服务器端)

    基站定位技术,全称为Location-Based Service(基于位置的服务),是移动通信领域的一种重要技术,它通过分析手机与多个基站之间的信号强度和时延,来确定手机所在的位置。本压缩包包含了一个完整的LBS基站定位系统...

    Android 百度 基站定位

    在Android平台上,百度基站定位是一种常见的地理定位方法,它结合了网络信号和GPS信号来获取设备的位置信息。本文将深入探讨这一技术,并基于提供的资源,包括相关jar包和示例项目,来阐述如何在Android应用中集成并...

    Androidstudio3.0百度地图通过经纬度定位&地图类型转换

    本文将深入探讨如何在Android Studio 3.0环境下,利用百度地图SDK实现基于经纬度的定位功能以及地图类型的切换,包括普通模式、卫星模式、热力图和实时路况等功能。 首先,集成百度地图SDK是开发的第一步。你需要在...

Global site tag (gtag.js) - Google Analytics