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

时间:2015-11-29 09:56:09

标签: java android center android-mapview marker

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

但我不知道如何实现这一目标。希望我能从这里得到帮助。

ChooseFromMapActivity

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() )
        );
    }
}

3 个答案:

答案 0 :(得分:0)

根据您的标记位置调整地图:

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));

答案 1 :(得分:0)

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(location, 16));
mMap.addMarker(new MarkerOptions()
        .position(location)
        .draggable(false)
        .title("sent location :)"));

答案 2 :(得分:0)

试试这段代码:

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作为标记。