您现在的位置是:首页 > 文章详情

安卓中百度地图的使用

日期:2017-03-25点击:508

安卓中百度地图的使用

1.导入到程序中

422101-20171025192450566-154495023.png

422101-20171025192454926-825847423.png

422101-20171025192500926-2049913445.png

2.一些权限配置

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"  package="demo.jq.com.lbstest"> <application  android:allowBackup="true"  android:icon="@mipmap/ic_launcher"  android:label="@string/app_name"  android:roundIcon="@mipmap/ic_launcher_round"  android:supportsRtl="true"  android:theme="@style/AppTheme"> <meta-data  android:name="com.baidu.lbsapi.API_KEY"  android:value="Uvo2IDT7i6KFtdeoH1gr7TUrGy6WkvPg" /> <activity android:name=".MainActivity"> <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 android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_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" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> </manifest>

3.定义显示空间

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="vertical"  android:layout_width="match_parent"  android:layout_height="match_parent"> <TextView  android:id="@+id/position_text_view"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:visibility="gone" /> <com.baidu.mapapi.map.MapView  android:id="@+id/bmapView"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:clickable="true" /> </LinearLayout>

4.实现功能

package demo.jq.com.lbstest; import android.content.pm.PackageManager; import android.location.Location; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; 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.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.model.LatLng; import java.util.ArrayList; import java.util.List; /**  * 同一个类文件中,只允许有一个公用类  * @author jim  */ public class MainActivity extends AppCompatActivity { public LocationClient mLocationClient; private TextView positionText; private MapView mapView; private boolean isFirstLocate = true; private BaiduMap baiduMap; private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mLocationClient = new LocationClient(getApplicationContext()); mLocationClient.registerLocationListener(new MyLocationListener()); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); mapView = (MapView) findViewById(R.id.bmapView); // 获取当前的地图 baiduMap = mapView.getMap(); positionText = (TextView) findViewById(R.id.position_text_view); List<String> permissionList = new ArrayList<>(); if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED) { permissionList.add(android.Manifest.permission.ACCESS_FINE_LOCATION); } if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED) { permissionList.add(android.Manifest.permission.READ_PHONE_STATE); } if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) { permissionList.add(android.Manifest.permission.WRITE_EXTERNAL_STORAGE); } if (!permissionList.isEmpty()) { String[] permissions = permissionList.toArray(new String[permissionList.size()]); ActivityCompat.requestPermissions(MainActivity.this,permissions,1); } else { requestLocation(); } } private void navigateTo(BDLocation location) { if (isFirstLocate) { Log.d(TAG,"ddd"+isFirstLocate); LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll); baiduMap.animateMapStatus(update); isFirstLocate = false; Log.d(TAG,"ddd"+isFirstLocate); } } private void requestLocation() { initLocation(); mLocationClient.start(); } private void initLocation() { LocationClientOption option = new LocationClientOption(); option.setIsNeedAddress(true); mLocationClient.setLocOption(option); } @Override public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults) { switch (requestCode) { case 1: if (grantResults.length >0) { for (int result :grantResults) { if (result != PackageManager.PERMISSION_DENIED) { Toast.makeText(this,"必须同意权限才能使用本程序",Toast.LENGTH_SHORT).show(); finish(); return; } } requestLocation(); } else { Toast.makeText(this,"发生未知错误",Toast.LENGTH_SHORT).show(); finish(); } break; default: } } @Override protected void onResume() { super.onResume(); mapView.onResume(); } @Override protected void onPause() { super.onPause(); mapView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); mLocationClient.stop(); mapView.onDestroy(); } /**  * 内部类  */ public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { StringBuilder currentPostion = new StringBuilder(); currentPostion.append("纬度:").append(location.getLatitude()).append("\n"); currentPostion.append("纬度:").append(location.getLongitude()).append("\n"); currentPostion.append("国家:").append(location.getCountry()).append("\n"); currentPostion.append("省:").append(location.getProvince()).append("\n"); currentPostion.append("市:").append(location.getCity()).append("\n"); currentPostion.append("区:").append(location.getDistrict()).append("\n"); currentPostion.append("街道:").append(location.getStreet()).append("\n"); currentPostion.append("定位方式:"); if (location.getLocType() == BDLocation.TypeGpsLocation) { currentPostion.append("GPS"); } else { currentPostion.append("网络"); } positionText.setText(currentPostion); navigateTo(location); } } } 

422101-20171025193146394-974136087.png



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/7731832.html,如需转载请自行联系原作者

原文链接:https://yq.aliyun.com/articles/346121
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章