【问题标题】:MapBox showing a map with a pinMapBox 显示带有图钉的地图
【发布时间】:2016-08-12 22:12:33
【问题描述】:

我正在使用 MapBox 并显示一个设置用户地理编码的图钉。该程序在所有 api 上都可以正常工作......除了 19 是黑屏。当我按照此处的文档进行操作时,我不确定该怎么做:

https://www.mapbox.com/android-sdk/examples/marker/

https://github.com/mapbox/mapbox-android-demo/blob/master/MapboxAndroidDemo/src/main/java/com/mapbox/mapboxandroiddemo/examples/annotations/CustomInfoWindowActivity.java

我的一些代码如下:

分级:

compile ('com.mapbox.mapboxsdk:mapbox-android-sdk:4.2.0-beta.1@aar'){
    transitive=true
}
compile('com.mapbox.mapboxsdk:mapbox-android-services:1.2.1@aar') {
    transitive = true
}

获取地图视图

    mapView = (MapView) findViewById(R.id.mapView);
    mapView.setStyle(Style.MAPBOX_STREETS);
    mapView.onCreate(savedInstanceState);
    mapView.getMapAsync(this);

地图准备好后回调:

public void onMapReady(MapboxMap mapboxMap) {
    // Relevant sources shown only
    mapboxMap.setStyleUrl(Style.MAPBOX_STREETS);
    mapboxMap.setOnInfoWindowClickListener(this);
    CameraPosition cameraPosition = new CameraPosition.Builder()
            .target(geocodeLatLng)
            .zoom(15)
            .bearing(0)
            .build();
    mapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
    Marker position = mapboxMap.addMarker(new MarkerOptions().position(geocodeLatLng).title(location));
    position.setSnippet(address);
    position.showInfoWindow(mapboxMap, mapView);
}

布局文件:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                xmlns:mapbox="http://schemas.android.com/apk/res-auto"
                android:orientation="vertical">

    <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:zoom="11"/>


</RelativeLayout>

我还有什么遗漏的吗?我也有 AndroidManifest.xml 和 gradle 更改。它显然适用于较新的 API,而不是较旧的 API。该网站说他们支持 API 15+?

【问题讨论】:

  • 有什么有用的 logcat 信息可以发布吗?可能不是,但只是检查。

标签: android mapbox


【解决方案1】:

不知道为什么,但这解决了它。以前我在最顶部的 MapFragmentActivity 中执行此操作:

MapboxAccountManager.start(this, getString(R.string.access_token));

事实证明(仔细阅读他们的文档)应该在 MainActivity.java 中的应用加载时完成。我这样做了,它奏效了。出于某种原因,如果您在 setContentView(R.layout.activity_main); 之前的相关课程中执行此操作,但只能在较新的设备上执行此操作(不确定区别)。

【讨论】:

  • 需要在使用任何 Mapbox 地图之前设置 Mapbox 访问令牌,这包括将其添加到您的布局中。这就是为什么在setContentView 之前使用MapboxAccountManager 是必要的。从技术上讲,只要事先调用该方法,您就可以在任何地方调用该方法,否则您将收到 null 错误。很高兴听到你想通了!
  • 我在setContentView 之前有过。但我在那个 FragmentActivity 中有它。我将其更改为在应用程序加载时,它起作用了。
  • 我认为这个答案需要更新。这个问题仍然存在
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-25
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多