Java 如何在地图中心设置标记?

Java 如何在地图中心设置标记?,java,android,center,android-mapview,marker,Java,Android,Center,Android Mapview,Marker,我想在我的应用程序中使用地图视图,当我们拖动地图时,它将显示标记的位置。为此,我可以通过在地图中心设置标记来完成,这样当我们拖动地图时,我们可以得到当前位置的地址。像这样: 但我不知道如何做到这一点。希望我能从这里得到帮助 从映射活动中选择 public class ChooseFromMapActivity extends AppCompatActivity implements GoogleMap.OnCameraChangeListener { TextView textShow

我想在我的应用程序中使用地图视图,当我们拖动地图时,它将显示标记的位置。为此,我可以通过在地图中心设置标记来完成,这样当我们拖动地图时,我们可以得到当前位置的地址。像这样:

但我不知道如何做到这一点。希望我能从这里得到帮助

从映射活动中选择

public class ChooseFromMapActivity extends AppCompatActivity implements GoogleMap.OnCameraChangeListener {

    TextView textShowAddress;
    private GoogleMap mMap;
    LatLng latLng;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_choose_from_map);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mMap = mapFragment.getMap();

        mMap.getUiSettings().setZoomControlsEnabled(true);
        mMap.getUiSettings().setRotateGesturesEnabled(true);
        mMap.getUiSettings().setScrollGesturesEnabled(true);

        latLng = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(latLng).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));

        textShowAddress = (TextView) findViewById(R.id.textShowAddress);

        if (Build.VERSION.SDK_INT >= 21) {
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            getWindow().setStatusBarColor(getResources().getColor(R.color.colorPrimaryDark));
        }
  }
    @Override
    public void onCameraChange(CameraPosition position) {
        mMap.clear();
        mMap.addMarker( new MarkerOptions()
                        .position( position.target )
                        .title( position.toString() )
        );
    }
}

根据标记位置调整地图,如下所示:

latLang = marker.getPosition(); // get LatLang object
map.setCenter(latLang); //set google maps instance with that object of LatLang
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), zoom));
您还可以尝试另一种方法,将摄影机位置移动为:

latLang = marker.getPosition(); // get LatLang object
map.setCenter(latLang); //set google maps instance with that object of LatLang
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), zoom));
请尝试以下代码:

mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) 
{
    if(mMarker==null)
    {
        mMarker = mMap.addMarker(new MarkerOptions().position(cameraPosition.target).title("Marker in Sydney")
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.marker_ico)));
        mMarker.showInfoWindow();
    }
    else
    {
        mMarker.setPosition(cameraPosition.target);
    }
}
});

唯一的问题是,只有在地图拖动结束时,标记才会移动到地图的中心。您只需添加ImageView并将其粘贴到地图片段的中心即可避免此问题。然后可以使用mMarker.setVisible(false);隐藏标记并仅显示ImageView作为标记。

检查下面的答案谢谢您的回复。它在setCenter上显示错误。无法解析方法setCenter。它的纬度和经度给定错误。我已经初始化了变量。不知道出了什么问题。你能给我详细的代码吗?谢谢你的回复。。。我不明白位置变量的作用是什么??这是一个Latlang变量吗?这只是将相机移动到该位置。它没有像我所希望的那样给标记赋予拖动效果。@user3623979是的,它是一个latlng变量是的,我尝试过这段代码,但在拖动地图时它没有显示任何结果。