Mapbox的是最新中文API(一),www_ww_ww原创Mapbox Android SDK
2016-09-08 15:51
676 查看
Mapbox Android SDK
MapboxAndroid SDK本指南将指导您完成Mapbox在Android Studio上加载地图
并改变地图的风格。
当然!我们还积极发展Mapbox
Android SDK和将更新本指南和添加新的改进的神奇功能。
开始
开始之前你需要准备:An
access token你可以在此帐户页面申请.
Android
Studio 你可以从谷歌免费下载
谷歌玩开发者账户(可选) 如果你想发布您的应用程序到谷歌play,你需要一个谷歌开发者账户。即使没有,你还是可以预览应用程序在一个Android虚拟设备(AVD)或演示应用程序从一个SDK安装在一个物理设备。
配置android studio
新建一个工程:项目名称
My First Mapbox App
公司域设置为
mycompany.com
最低SDK,
select API 15: Android 4.0.3 (IceCreamSandwich)。这是目前Mapbox
Android SDK的支持的最低的API级别。
单击Next进入Activity选择屏幕。选择空Activity并单击Next。接受默认的
Activity Name和
Layout Name并单击Finish。
建立一个Android虚拟设备
Android Studio可以帮助你在你的电脑上设置虚拟Android设备来帮助应用程序开发时的测试。设置一个,点击安卓虚拟设备(AVD)管理器图标,然后点击创建虚拟设备按钮。从手机的类别,选择Nexus
5 x,然后单击Next。选择您想测试的版本(本指南x86,Android 6.0)。了解更多点击文档.
安装Mapbox
我们建议在Gradle中进行。将自动安装必要的依赖关系和SDK二进制文件从Maven中央存储库中的MapboxAndroid SDK
安装当前稳定版本,添加您的模块构建文件
~/MyFirstMapboxApp/app/build.gradle:
repositories{mavenCentral()}
dependencies{compilefileTree(dir:'libs',include:['*.jar'])testCompile'junit:junit:4.12'compile'com.android.support:appcompat-v7:24.1.1'
compile('com.mapbox.mapboxsdk:mapbox-android-sdk:4.2.0-beta.1@aar')
{transitive=true}
}[/code]
应用程序权限
确保以下核心权限在您的项目AndroidManifest.xml文件从
~/MyFirstMapboxApp/app/src/main/:
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>[/code]
如果应用程序是针对Android棉花糖(API 23)或更高版本的在运行时需要请求权限。另外,你需要在清单文件中添加
<application>标签:
<serviceandroid:name="com.mapbox.mapboxsdk.telemetry.TelemetryService"/>
访问令牌(Access
tokens)
使用Mapbox服务和api,如地图、方向,和地理编码,你必须有一个Mapbox访问令牌。你可以找到你的访问令牌你的帐户设置,您可以检索当前令牌并生成新的。访问令牌帮助您跟踪使用情况和最小化中断事件令牌需要撤销。首先,进入你的帐户设置,创建一个新的访问令牌
My First Mapbox App。一旦你有你的令牌,开放
strings.xml文件从
~/MyFirstMapboxApp/app/src/main/res/values.
为你的访问令牌(
accesstoken):添加一个新的字符串
<resources>
<stringname="app_name">My First Mapbox App</string>
<stringname="access_token"><youraccesstokenhere></string>
</resources>
现在打开
MainActivity.java文件和使用
MapboxAccountManager在你的
onCreate方法:
@Override
protected void onCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
MapboxAccountManager.start(this,getString(R.string.access_token));
setContentView(R.layout.activity_main);...
MapView
MapView类是我们lib的重要组成部分。它像任何其他
View和它的行为可以改变静态XML布局文件,或者以编程方式在运行时。添加
MapView作为一个布局元素,取代中的代码
activity_main.xml文件从
~/MyFirstMapboxApp/app/src/main/res/layout/
以下:
<?xml version="1.0" encoding="utf-8"?><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.maps.MapView
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
稍后,您可以在Activity调用
MapView类:
findViewById(R.id.mapview);
MapboxMap
一旦你已经声明和分配MapView,你将需要调用
MapView.getMapAsync创建一个
MapboxMap对象。
MapboxMap对象允许你改变风格和与你的地图。
mapView.getMapAsync(newOnMapReadyCallback(){
@OverridepublicvoidonMapReady(MapboxMapmapboxMap){[/code]
// Interact with the map using mapboxMap here}});
现在您已经准备好开始构建Mapbox !
添加一个地图
让我们添加一个芝加哥地图应用。首先,打开你的My First Mapbox App在AndroidStudio并导航到
~/app/src/main/java/com.mycompany.myfirstmapboxapp/MainActivity.java.
我们要用
mapView类添加一个Mapbox早些时候我们建立映射我们的应用程序,应用程序需要知道当添加地图,所以我们会在Activity里初始化
onCreate.
private MapView mapView;
@Override protected void onCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
MapboxAccountManager.start(this,getString(R.string.access_token));
setContentView(R.layout.activity_main);
mapView(MapView)findViewById(R.id.mapview);
mapView.onCreate(savedInstanceState);}
接下来,使用你的新
mapView类来创建一个
MapboxMap对象。
MapboxMap有很多内置的方法,将允许您更改地图样式或相机位置,添加标记,和更多。创建您的
MapboxMap:
mapView.getMapAsync(new OnMapReady Callback(){
@Override public void onMapReady
(MapboxMapmapboxMap){// Customize map with markers, polylines, etc.}});
配置您的mapView
您可以配置你的地图的许多特点,包括相机的位置,开始和风格URL在Activity的布局文件。添加以下Activity的布局文件,在你com.mapbox.mapboxsdk.maps.MapView标签:
<com.mapbox.mapboxsdk.maps.MapView
mapbox:center_latitude="41.885"
mapbox:center_longitude="-87.679"
mapbox:style_url="@string/style_mapbox_streets"
mapbox:tilt="20"mapbox:zoom="12".../>
当你完成进入上面的代码,你可能会看到一些红色警告文本从Android studio。这是因为我们还没有导包
MainActivity.java。您可以自动导入这些类
按Alt + Enter。另外,手动添加以下的你
MainActivity.java文件:
importandroid.app.Activity;
importandroid.os.Bundle;
importcom.mapbox.mapboxsdk.maps.MapView;
importcom.mapbox.mapboxsdk.maps.MapboxMap;
importcom.mapbox.mapboxsdk.maps.OnMapReadyCallback;
importcom.mapbox.mapboxsdk.MapboxAccountManager;
接下来,我们将处理其他类型的事件可能会影响我们的地图应用程序:
@Override
public void onResume()
{super.onResume();
mapView.onResume();}
@Override public void onPause(){super.onPause();
mapView.onPause();}
@Override public void onSaveInstanceState(BundleoutState){super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);}
@OverridepublicvoidonLowMemory(){super.onLowMemory();
mapView.onLowMemory();}
@OverrideprotectedvoidonDestroy(){super.onDestroy();
mapView.onDestroy();}
单击“应用”按钮
构建应用程序,AndroidStudio将几秒钟后运行,如果它结束没有错误。
改变地图的风格
Mapbox Android SDK把地图风格捆绑在一起,让我们试着改变一下。让我们使用LIGHT样式
。
设置你的地图最初的风格
LIGHT,打开你的
activity_main.xml布局文件和设置
<com.mapbox.mapboxsdk.maps.MapView
mapbox:style_url="@string/style_light".../>
你也可以用
MapboxMap的
setStyleURL方法改变你的风格。
mapboxMap.setStyleUrl(Style.LIGHT);
创建你自己的风格
您可以创建自定义样式MapboxStudio并将它们添加到您的应用程序。添加您的自定义样式之一:mapboxMap.setStyleUrl("mapbox://styles/<your-account-name>/<your-style-ID>");
这只是简单的使用方式,之后会放出更复杂和实用的API
代码Activityimport android.app.Activity;
import android.os.Bundle;
import com.mapbox.mapboxsdk.maps.MapView;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.MapboxAccountManager;
public class MainActivity extends Activity {
private MapView mapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Mapbox access token only needs to be configured once in your appMapboxAccountManager.start(this, <your access token here>);
// This contains the MapView in XML and needs to be called after the account manager
setContentView(R.layout.activity_main);mapView = (MapView) findViewById(R.id.mapView);mapView.onCreate(savedInstanceState);mapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(MapboxMap mapboxMap) {
// Customize map with markers, polylines, etc.
}
});
}
// Add the mapView lifecycle to the activity's lifecycle methods
@Override
public void onResume() {
super.onResume();mapView.onResume();
}
@Override
public void onPause() {
super.onPause();mapView.onPause();
}
@Override
public void onLowMemory() {
super.onLowMemory();mapView.onLowMemory();
}
@Override
protected void onDestroy() {
super.onDestroy();mapView.onDestroy();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);mapView.onSaveInstanceState(outState);
}
}
布局
<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"> <!-- Set the starting camera position and map style using xml--> <com.mapbox.mapboxsdk.maps.MapView android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="match_parent" mapbox:style_url="mapbox://styles/mapbox/streets-v9" mapbox:center_latitude="40.73581" mapbox:center_longitude="-73.99155" mapbox:zoom="11"/> </RelativeLayout>
相关文章推荐
- Android中文API最新中文版
- android sdk manager 更新不到最新资源列表解决办法—Missing SDK Platform Android, API
- Android中文API最新中文版
- Android中文API最新中文版
- Android2.2 API 中文文档系列 Manifest
- Android2.2 API 中文文档系列(6) —— ImageView
- Android2.2 API 中文文档系列(2) —— EditText
- Android2.2 API 中文文档系列(2) —— EditText
- Android 0.9 API改变中文总结
- Android2.2 r1 API 中文文档系列(10) —— CheckBox
- Android2.2 API 中文文档系列(5) —— View
- ExtJs 3.0 最新最全中文API帮助文档,CHM离线的
- Android 2.2 r1 API 中文文档系列(11) —— RadioButton
- Android2.2 API 中文文档系列(8) —— QuickContactBadge
- Android2.2 API 中文文档系列(9) —— ZoomButton
- Android2.2 API 中文文档系列(6) —— ImageView
- Android2.2 API 中文文档系列(1) —— TextView
- Android中文SDK-----Android新手入门
- Android2.2 API 中文文档系列(3) —— AccessibilityService