Google Map API V2 - 如何在用户滚动地图时将标记保留在屏幕中央?

don*_*221 17 android google-maps google-maps-api-2

Google Map API V2 - 如何在用户滚动地图时将标记保留在屏幕中央?

我的目的是让用户选择一个位置.我使用以下代码添加标记(它来自com.example.mapdemoAndroid SDK)

mMap.addMarker(new MarkerOptions()
    .position(new LatLng(0, 0))
    .title("Marker"));
Run Code Online (Sandbox Code Playgroud)

如何将标记保留在屏幕中央,然后检索它的位置?

dou*_*leA 15

我不认为你可以在屏幕中间保留一个标记并轻松浮动它.我的建议是欺骗你的用户.像标记按钮一样将标记图像添加到地图上.您可以使用xml布局将其放在屏幕中间.然后,当您的用户选择一个位置时,只需从屏幕中间检索gps坐标.

在旁注上你也可以让你的标记可拖动然后用户可以将它拖动到地图上.

mMap.addMarker(new MarkerOptions().position(coordinate)
                    .title("Your Title")
                    .snippet("Please move the marker if needed.")
                    .draggable(true)); 
Run Code Online (Sandbox Code Playgroud)

  • 当然有可能!我有相反的"虫子",愿意把它贴在地图上.不要问我怎么样,我不确定我是怎么处理的...... (2认同)

Ake*_*ist 9

怎么样?

mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
        public void onCameraChange(CameraPosition arg0) {   
                mMap.clear();               
                mMap.addMarker(new MarkerOptions().position(arg0.target));
        }
});
Run Code Online (Sandbox Code Playgroud)

  • 这可以工作,但每次激活CameraChangeListener时绘制的开销都会导致地图UI抖动.这是因为绘图发生在同一个线程上.您必须找到一种绘制标记或添加标记的方法,而不会在每次发生UI更改时进行更新 (3认同)
  • +1它的工作,但有混蛋.如何使标记运动平稳. (2认同)

Dar*_*zer 6

选项1

我认为最好的选择是移动标记,当用户移动地图时......

googleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
            @Override
            public void onCameraMove() {
                marker.setPosition(googleMap.getCameraPosition().target);//to center in map
            }
        });
//note marker is global
Run Code Online (Sandbox Code Playgroud)

选项 2

或者简单地说,在您的布局中,使用相对布局放置片段,并在标记图标上方,您将计算该标记将始终位于地图的中间...

我认为这很复杂,因为屏幕的大小,但每次标记时手机都不会移动......