我已经为标记应用了自定义PNG图像(大小与默认标记聚类圆相同),这种奇怪的事情发生了。当两个标记靠近时(即使它们没有重叠),我需要点击一次标记两次,因为第一次点击错误地给了我以前的标记。
即,
要重现此问题,我创建了一个单独的项目,但没有更改标记图像。我放置了两个标记("我的房子"和#34; Garage")彼此靠近,并在模拟器中运行应用程序,并使用鼠标单击准确的位置。我将鼠标放在" Garage"的中心(黑点)上。标记,并一直点击它没有移动鼠标。以下是日志。
[ 12-31 13:42:24.509 28921:28921 D/ ]
Garage is clicked
[ 12-31 13:42:25.664 28921:28921 D/ ]
My house is clicked
[ 12-31 13:42:26.819 28921:28921 D/ ]
Garage is clicked
[ 12-31 13:42:28.066 28921:28921 D/ ]
My house is clicked
[ 12-31 13:42:29.333 28921:28921 D/ ]
Garage is clicked
[ 12-31 13:42:30.503 28921:28921 D/ ]
My house is clicked
如您所见,即使我点击完全相同的位置,标记事件的参数也会不断变化。这是一个错误吗?
MainActivity
class MainActivity : AppCompatActivity(), OnMapReadyCallback
{
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val mapFragment = this.supportFragmentManager.findFragmentById(
R.id.mapView) as SupportMapFragment;
mapFragment.getMapAsync(this)
}
var mMap:GoogleMap? = null;
override fun onMapReady(p0: GoogleMap?)
{
mMap = p0;
var marker = MarkerOptions()
marker.position(LatLng(51.501518, -0.141847));
marker.title("My house");
p0?.addMarker(marker);
var marker2 = MarkerOptions()
marker2.position(LatLng(51.501518, -0.142300));
marker2.title("Garage");
p0?.addMarker(marker2);
p0?.setOnMarkerClickListener {
marker ->
Log.d("", marker.title + " is clicked")
true;
}
}
}
XML
<fragment
android:id="@+id/mapView"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="8dp"
map:uiZoomControls="true"
map:cameraTargetLat="51.501518"
map:cameraTargetLng="-0.141847"
map:cameraZoom="16"/>
PS:它似乎不一定是相邻的。我尝试了这些值,但它仍然发生了。
marker.position(LatLng(51.501518, -0.141847));
marker2.position(LatLng(51.501518, -0.142500));
然后,我进一步将两者分开,直到
marker.position(LatLng(51.501518, -0.141847));
marker2.position(LatLng(51.501518, -0.142800));
现在,单击中心(黑点)不会重现问题。但点击靠近另一个标记的制造商偏离中心仍然可以解决问题。
答案 0 :(得分:0)
可以在此处复制100%。我找到了一种解决方法,只需将反向的zIndex设置为MarkerOptions。
for (int i = 0; i < locations.size(); i++) {
Marker marker = mGoogleMap.addMarker(new MarkerOptions()
.position(latLng)
.zIndex(locations.size() - 1 - i) // this avoids the bug when the bottom marker is selected
);
}