安卓中百度地图的使用
安卓中百度地图的使用
1.导入到程序中
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); } } }
本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/7731832.html,如需转载请自行联系原作者

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Apicloud自定义模块
各种坑,折腾了两天才有点头绪。我用的是Android Studio编辑器,官网是Eclipse的视频。文档也比较蛋疼。 自定义模块的目录结构要按照下面来处理 其中res_模块名,存放res和AndroidMainfest.xml AndroidMainfest.xml需要处理一下,去掉不需要的东西。 res中可以把一些drawable融合到一起。 AndroidMainfest.xml中把一些权限和服务保留,其他的东西删除掉! source下面的这个jar包最核心 需要通过android studio处理才能导出。 其他的依赖包,复制进来就可以了。 target中存放一些so文件 module.json中存放模块名称和类 剩下的就是把它压缩成zip格式,上传使用了。测试可以使用。 具体的可以看官方的文档处理!!! 严格按照这种格式处理!!! 安卓功力不深,各种被打击!!!官方文档和视频太操蛋!!! 本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/7762582.html如需转载请自行联系原作者
- 下一篇
iOS视频播放器AVPlayer创建
前言:AVPlayer是用于管理媒体资产的播放和定时控制器对象它提供了控制播放器的有运输行为的接口,如它可以在媒体的时限内播放,暂停,和改变播放的速度,并有定位各个动态点的能力。可以使用AVPlayer来播放本地和远程的视频媒体文件,如QuickTime影片和MP3音频文件,以及视听媒体使用HTTP流媒体直播服务。 一个普通播放器的组成 苹果在视频播放方面提供了多个框架供我们选择使用。分别为: 基于mediaPlayer类库的MPMediaPlayerController(iOS9后遭到废弃,被AVPlayerViewController所替代) 基于AVFounditon类库的AVPlayer 基于AVKit类库的AVPlayerViewController(iOS8后才可使用) 正文 AVPlayer与MPMediaPlayerController比较: AVplayer有比较灵活,当然,也需要你去自定义构建UI。还有一大优势,例如其扩展的AVQueuePlayer,可以实现视频无缝队列播放、多视频同时播放、视频转换、编解码等功能。 MPMediaPlayerController实...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范