zoukankan      html  css  js  c++  java
  • 【第三方SDK】百度地图实现最简单的定位功能(无地图界面)

    在近期的项目中,须要实现无地图界面的定位功能,定位用户所在的城市。因此,本篇文章,主要介绍怎样使用百度地图SDK实现无导航界面的定位功能。

    1.申请百度开发人员账户

    2.创建应用,获取key

    例如以下图所看到的

    3.下载SDK文件。并导入至我们的project

    以下是我的測试项目的project结构

    因此我这里仅仅须要定位,不须要百度地图的其它功能。比方导航等等,所以仅仅导入定位相关的SDK就可以。

    4.配置权限和编写代码

    详细配置过程,还请參考百度的API说明

    地址:http://developer.baidu.com/map/index.php?title=android-locsdk/guide/v4-2

    首先是主文件

    MainActivity.java

    package com.example.justlocation;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    
    import com.baidu.location.BDLocation;
    import com.baidu.location.BDLocationListener;
    import com.baidu.location.LocationClient;
    import com.baidu.location.LocationClientOption;
    
    public class MainActivity extends Activity {
    
    	private TextView tv;
    	// 定位client类
    	public LocationClient mLocationClient = null;
    	// 定位监听器类
    	public BDLocationListener myListener = new MyLocationListener();
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.actitity_main);
    		tv = (TextView) findViewById(R.id.tv);
    		// 初始化
    		mLocationClient = new LocationClient(getApplicationContext());
    		// 设置定位參数
    		LocationClientOption option = new LocationClientOption();
    		option.setOpenGps(true); // 打开GPRS
    		option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02
    		option.setScanSpan(5000); // 设置发起定位请求的间隔时间为5000ms
    		// 设置获取地址信息
    		option.setIsNeedAddress(true);
    		mLocationClient.setLocOption(option);
    		// 注冊监听函数
    		mLocationClient.registerLocationListener(myListener);
    		// 调用此方法開始定位
    		mLocationClient.start();
    
    	}
    
    	/**
    	 * 定位成功之后的回调函数
    	 * 
    	 * @author zhaokaiqiang
    	 * 
    	 */
    	public class MyLocationListener implements BDLocationListener {
    		@Override
    		public void onReceiveLocation(BDLocation location) {
    			if (location == null)
    				return;
    			StringBuffer sb = new StringBuffer(256);
    			sb.append("时间 : ");
    			sb.append(location.getTime());
    			sb.append("
    返回码 : ");
    			sb.append(location.getLocType());
    			sb.append("
    纬度 : ");
    			sb.append(location.getLatitude());
    			sb.append("
    经度 : ");
    			sb.append(location.getLongitude());
    			sb.append("
    半径 : ");
    			sb.append(location.getRadius());
    			sb.append("
    省 : ");
    			sb.append(location.getProvince());
    			sb.append("
    市 : ");
    			sb.append(location.getCity());
    			if (location.getLocType() == BDLocation.TypeGpsLocation) {
    				sb.append("
    速度 : ");
    				sb.append(location.getSpeed());
    				sb.append("
    卫星数 : ");
    				sb.append(location.getSatelliteNumber());
    			}
    			tv.setText(tv.getText() + "
    " + sb.toString());
    		}
    	}
    
    }
    

    配置文件

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.justlocation"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="14"
            android:targetSdkVersion="19" />
    
        <!-- 这个权限用于进行网络定位 -->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
        </uses-permission>
        <!-- 这个权限用于訪问GPS定位 -->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
        </uses-permission>
        <!-- 用于訪问wifi网络信息,wifi信息会用于进行网络定位 -->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
        </uses-permission>
        <!-- 获取运营商信息。用于支持提供运营商信息相关的接口 -->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
        </uses-permission>
        <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
        <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>
    
        <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="ngTqhh1a0SF0PnzFfEc853W7" />
    
            <activity
                android:name="com.example.justlocation.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>
    
    </manifest>

    执行效果就不上图了,由于在真机上。不好截图。

    有须要源程序的留邮箱。

  • 相关阅读:
    Dreamweaver中SourceAnyWhere的使用
    访问被拒绝:“AjaxPro”的解决方案
    NDoc1.3.1使用手册
    程序中操作Excel
    模拟提交程序相关专题
    利用SMTP服务发送电子邮件
    如何使用树形控件
    GDI+简单使用例子
    程序中操作Word
    签名工具使用介绍
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5197317.html
Copyright © 2011-2022 走看看