[英]Why is my marker not resetting to null?
我有一張地圖,一次只允許1個標記。 但是為了阻止該標記被另一個標記意外替換,需要對其進行設置,以便在添加另一個標記之前清除該標記。
我通過onMapClick設置標記,並通過onMapLongClick清除它們。 目前,清除和添加標記的效果很好,但是我似乎無法設置地圖,因此您需要先清除地圖。
我已經嘗試通過檢查現有標記來解決該問題,但沒有成功。
這是我的設置代碼,當前可以通過清除現有標記並添加另一個而無需先清除原始標記的方式來工作:
@Override
public void onMapLongClick(LatLng position) {
mMap.clear();
Toast.makeText(this, "Position Cleared", Toast.LENGTH_SHORT).show();
position = null;
}
@Override
public void onMapClick(LatLng position){
if (position != null){
mMap.clear();
mMap.addMarker(new MarkerOptions()
.position(position)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher_new)));
}
else {
mMap.addMarker(new MarkerOptions()
.position(position)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher_new)));
}
}
但我認為應該是這樣的:
@Override
public void onMapLongClick(LatLng position) {
mMap.clear();
Toast.makeText(this, "Position Cleared", Toast.LENGTH_SHORT).show();
position = null;
}
@Override
public void onMapClick(LatLng position){
if (position == null){
//mMap.clear();
mMap.addMarker(new MarkerOptions()
.position(position)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher_new)));
}
else {
Toast.makeText(this, "Clear first", Toast.LENGTH_SHORT).show();
}
}
但是所有要做的只是給我Toast消息,甚至在第一次加載地圖時也根本無法添加標記。
任何幫助都會很棒
創建對添加的標記的引用,並刪除它,然后再將其添加到新的LatLng位置。
private Marker marker;
/**
**
some code here
**
**/
@Override
public void onMapClick(LatLng position) {
if(marker != null)
marker.remove();
marker = mMap.addMarker(new MarkerOptions().position(position).icon(
BitmapDescriptorFactory
.fromResource(R.drawable.ic_launcher_new)));
}
我意識到自己使用的代碼不正確,因此我已經解決了以下問題:
public void onMapClick(LatLng position){
if(marker == null) {
marker = mMap.addMarker(new MarkerOptions()
.position(position)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher_new)));
} else {
Toast.makeText(this, "Please clear previous position before adding another", Toast.LENGTH_SHORT).show();
}
該應用現在可以按預期運行。 謝謝您的幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.