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变量是的,我尝试过这段代码,但在拖动地图时它没有显示任何结果。