sh 在实时更新地图上发布Android位置(MapBox)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh 在实时更新地图上发布Android位置(MapBox)相关的知识,希望对你有一定的参考价值。

private boolean isFirstMessage = true;

private void updateMarker() {
    if (!isFirstMessage) {
        mMapView.removeMarker(mMarker);
    }
    isFirstMessage = false;
    mMarker = new Marker(mMapView, "", "", mLatLng);
    mMapView.addMarker(mMarker);
}
private void updatePolyline() {
    mMapView.removeOverlay(mLine);
    mLine.addPoint(mLatLng);
    mMapView.getOverlays().add(mLine);
}
private LatLng mLatLng;

Callback subscribeCallback = new Callback() {

    @Override
    public void successCallback(String channel, Object message) {
        JSONObject jsonMessage = (JSONObject) message;
        try {
            double mLat = jsonMessage.getDouble("lat");
            double mLng = jsonMessage.getDouble("lng");
            mLatLng = new LatLng(mLat, mLng);
        } catch (JSONException e) {
            Log.e(TAG, e.toString());
        }

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                updatePolyline();
                updateCamera();
                updateMarker();
            }
        });
    }
};
private PathOverlay mLine;

private void initializePolyline() {
    mLine = new PathOverlay(Color.BLUE, 5);
}
private MapView mMapView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mbox_view);

    // Get MapView
    mMapView = (MapView) findViewById(R.id.mapview);
    initializePolyline();

    // Start PubNub
    [ . . . ]
}
Callback subscribeCallback = new Callback() {

  @Override
  public void successCallback(String channel, Object message) {
    Log.d(PUBNUB_TAG, "Message Received: " + message.toString());
  }
};
private Pubnub mPubnub;

@Override
protected void onCreate(Bundle savedInstanceState) {
    [ . . . ]
    mPubnub = new Pubnub("publish_Key", "subscribe_key");
    try {
      mPubnub.subscribe("Channel Name Of Your Choice", subscribeCallback);
    } catch (PubnubException e) {
      Log.e(TAG, e.toString());
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical" >

    <com.mapbox.mapboxsdk.views.MapView
        android:id="@+id/mapview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:mapid="Your Map ID Here" />

</LinearLayout>
private void updateCamera() {
    mMapView.setCameraDistance(10);
    mMapView.setCenter(mLatLng);
}
git clone https://github.com/pubnub/java.git

以上是关于sh 在实时更新地图上发布Android位置(MapBox)的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中步行/驾驶时更新位置标记并在 Google 地图上绘制路径

moveCamera 没有更新到我在 Android 谷歌地图上的当前位置?

如何在 Android Studio 中删除谷歌地图上多个更新位置的旧标记?

android:无法在地图上添加当前位置

在 Android 上更改位置时不断更新标记

如何从后台服务android更新谷歌地图v2位置