安卓使用mapbox加载离线地图及获取位置信息
2015-08-20 16:48
525 查看
使用mapbox,先在build.gradle中添加:
在AndroidManifest.xml中添加权限
xml文件如下
avtivity.java如下:
[code]dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.0' compile ('com.mapbox.mapboxsdk:mapbox-android-sdk:0.7.4@aar'){ transitive=true } }
在AndroidManifest.xml中添加权限
[code] <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
xml文件如下
[code]<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:mapbox="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <com.mapbox.mapboxsdk.views.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" mapbox:mapid="Your MapBox mapid" mapbox:accessToken="Your Mapbox Access Token"/> </RelativeLayout>
avtivity.java如下:
[code]package com.example.zhangkaiyue.mapbox; import android.app.Activity; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import com.mapbox.mapboxsdk.overlay.UserLocationOverlay; import com.mapbox.mapboxsdk.tileprovider.tilesource.ITileLayer; import com.mapbox.mapboxsdk.tileprovider.tilesource.MBTilesLayer; import com.mapbox.mapboxsdk.views.MapView; import java.util.List; public class MainActivity extends Activity { private MapView mv; private UserLocationOverlay myLocationOverlay; private String currentMap = null; private LocationManager locationManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mv = (MapView) findViewById(R.id.mapview); MBTilesLayer mbTileLayer = new MBTilesLayer("/mnt/sdcard/SJBMap/beijing.mbtiles"); mv.setTileSource(new ITileLayer[]{mbTileLayer}); mv.setScrollableAreaLimit(mbTileLayer.getBoundingBox()); mv.setMinZoomLevel(mv.getTileProvider().getMinimumZoomLevel()); mv.setMaxZoomLevel(mv.getTileProvider().getMaximumZoomLevel()); mv.setCenter(mv.getTileProvider().getCenterCoordinate()); mv.setZoom(4); //Log.e("location", String.valueOf(mv.getUserLocation())); mv.setUserLocationEnabled(true); getMyLocation(); } public void getMyLocation(){ locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); // 获取所有可用的位置提供器 List<String> providerList = locationManager.getProviders(true); String provider; if (providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; } else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; } else { // 当没有可用的位置提供器时,弹出Toast提示用户 Toast.makeText(this, "No location provider to use", Toast.LENGTH_SHORT).show(); return; } Log.e("location", provider); Location location = locationManager.getLastKnownLocation(provider); if (location != null) { // 显示当前设备的位置信息 showLocation(location); } locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); } protected void onDestroy() { super.onDestroy(); if (locationManager != null) { // 关闭程序时将监听器移除 locationManager.removeUpdates(locationListener); } } LocationListener locationListener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { // 更新当前设备的位置信息 showLocation(location); } }; private void showLocation(Location location) { String currentPosition = "latitude is " + location.getLatitude() + "\n" + "longitude is " + location.getLongitude(); Log.e("location",currentPosition); } }
相关文章推荐
- DOM(二)-01-(示例-新闻字体)
- js获取Html元素的实际宽度高度
- PAT 1003. Emergency (25)
- Struts2(二)——配置文件struts2.xml的编写
- POJ 3984 迷宫问题(BFS)
- 第四章 变量、作用域和内存问题
- 优先队列
- hdcpc
- androidstudio--gsonformat--超爽的数据解析方式
- CSS Hack技术介绍及常用的Hack技巧集锦
- 内存泄漏检查工具valgrind的安装与使用
- Confirmation on Leaving the Current Page in an Angular.js App
- 总结
- Activity生命周期
- yum命令详解
- jquery选择器
- Android实时获取音量(单位:分贝)
- 如何建立一个“绑定友好的”usercontrol--wpf
- chart.js 里添加图表的清单:
- 百度地图定位地址为空