我已经为标记应用了自定义 PNG 图像(与默认标记聚类器圆的大小大致相同),并且发生了这种奇怪的事情。当两个标记靠近时(但即使它们不重叠),我需要点击一个标记两次,因为第一次点击错误地给了我前一个标记。
That is,
- 有两个标记 A 和 B 彼此靠近。
- 我点击 A,然后我得到一个带有 A 的标记点击事件。
- 然后,我点击 B,但我得到了 A 的标记点击事件。
- 如果我再次 Tab B,那么我会收到 B 的标记点击事件。
为了重现这个问题,我创建了一个单独的项目,并且没有更改标记图像。我将两个标记(“我的房子”和“车库”)彼此靠近放置,并在模拟器中运行该应用程序,并使用鼠标单击准确的位置。我将鼠标放在“车库”标记的中心(黑点)上并不断单击它without移动鼠标。下面是日志。
[ 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
正如您所看到的,即使我单击了完全相同的位置,标记事件的参数仍在不断变化。这是一个错误吗?
主要活动
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));
现在,单击中心(黑点)并没有重现该问题。但是,单击靠近另一个标记的制造商的偏心位置仍然会重现该问题。