您的位置:首页 > 移动开发 > Android开发

Mapbox的是最新中文API(一),www_ww_ww原创Mapbox Android SDK

2016-09-08 15:51 676 查看

Mapbox Android SDK

Mapbox
Android 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中央存储库中的Mapbox
Android 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

代码Activity

 import 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>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息