java - 如何在android studio中使用socket.io加载 map 后添加新标记

标签 java android socket.io

我正在使用 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/

相关文章:

javascript - 在 Angular 2 中导入 Socket.io 客户端,出现依赖项错误

android - 使用 WorkManager 时出现 Java.util.concurrent.RejectedExecutionException

android - 编写由 Android 应用程序创建的私有(private)文件

android - TeeChart(JavaAndroid 2012)教程示例导致UnsupportedOperationException

java - Android Facebook 登录弹出对话框

ios - 当设备连接到 Internet 连接时未收到所有通知

Node.js webRTC 屏幕共享

java - 不使用break停止for循环

java - 使用 Betamax 时为 "Illegal use of nonvirtual function call"

java - 什么会使用更多的内存