我正在使用 Android Studio 的 Google map api,当我的 socket.io 从服务器获取新位置时,我尝试添加新标记。 意思是在 map 加载后,我想写socket.on("newloc",...)...并在我的 map 上设置新标记,但它给力关闭。 我的代码:
socket.on("miad", new Emitter.Listener() {
@Override
public void call(final Object... args) {
JSONObject data = (JSONObject) args[0];
LatLng latLng = new LatLng(newlat,newlng);
mMap.addMarker(new MarkerOptions()
.position(latLng)
.title("First Pit Stop")
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
}
});
这缺少我的代码,例如我从套接字获取 newlat 和 newlng 。
最佳答案
我不知道你的套接字对象内部发生了什么。
正如我在评论中建议的那样,试试这个。
private void onMapReady(GoogleMap map){
try {
socket.on("miad", new Emitter.Listener() {
@Override
public void call(final Object... args) {
try {
JSONObject data = (JSONObject) args[0];
runOnUiThread(new Runnable() {
LatLng latLng = new LatLng(newlat, newlng);
mMap.addMarker(new MarkerOptions()
.position(latLng)
.title("First Pit Stop")
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
});
} catch (Exception e) {
Log.e("runOnUiThread", "Ex", e);
}
}
});
} catch (Exception e) {
Log.e("onMapReady", "Ex", e);
}
}
至少它会在你的 logcat 中告诉你哪一行破坏了你的代码以及可能的原因。
关于java - 如何在android studio中使用socket.io加载 map 后添加新标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57409428/