В настоящее время я пытаюсь запустить намерение Uri, чтобы, когда пользователь щелкает информационное окно маркера, он запускал запрос Google + имя соответствующего маркера, который я получил от Firebase и проанализировал в ClusterManager.
Я попытался создать держатель строки для хранения названия компании внутри него, а затем добавить его со строкой запроса Google и передать его в качестве Uri Intent внутри моего setOnInfoWindowClickListener.
( ПРИМЕЧАНИЕ: «TheNameOfThisMarker» здесь фактически не определено, я просто хотел дать представление о том, чего я пытаюсь достичь »)
Окно My Info Click Listener:
mMap.setOnInfoWindowClickListener(object : GoogleMap.OnInfoWindowClickListener {
override fun onInfoWindowClick(marker: Marker) {
val url = "http://www.google.com/#q=" + " " + (TheNameOfThisMarker)
val i = Intent(Intent.ACTION_VIEW)
i.setData(Uri.parse(url))
startActivity(i)
}
})
Загрузка данных из Firebase:
private fun loadMarkersFromDB() {
mCompanies.child("data/results").addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
if (dataSnapshot.exists()) {
for (s in dataSnapshot.children) {
var company = s.getValue(Company::class.java)
val infoWindow =
MyItem(company!!.latitude, company.longitude, company.name)
mClusterManager.setAnimation(false)
if ((company.latitude < (circle.center.latitude + circle.radius) && company.latitude > (circle.center.latitude - circle.radius))
&& ((company.longitude < (circle.center.longitude + circle.radius) && company.longitude > (circle.center.longitude - circle.radius)))
) {
mClusterManager.addItem(infoWindow)
}
TheNameOfThisMarker = company!!.name
Log.d("onDataChange", company.toString())
}
}
}
override fun onCancelled(databaseError: DatabaseError) {
Log.w("MapsActivity", databaseError.toException())
}
})
}
Настройка моего кластера:
private fun setUpCluster() {
// Initialize the manager with the context and the map.
// (Activity extends context, so we can pass 'this' in the constructor.)
mClusterManager = ClusterManager(this, mMap)
// Point the map's listeners at the listeners implemented by the cluster
// manager.
mMap.setOnCameraIdleListener(mClusterManager)
mMap.setOnMarkerClickListener(mClusterManager)
// Add cluster items (markers) to the cluster manager.
loadMarkersFromDB()
}
Несмотря на то, что я могу что-то сделать в моем информационном окне, нажмите «Слушатель», но я не знаю, как точно указать имя каждого отдельного маркера и добавить его в свой запрос Uri.