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位置