我想在我的应用中使用地图视图,它会在我们拖动地图时显示标记位置。为此我可以通过将标记设置在地图的中心来完成,因此当我们拖动地图时,我们可以获得当前位置的地址。像这样:
但我不知道如何实现这一目标。希望我能从这里得到帮助。
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() )
);
}
}
答案 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作为标记。