Итак, я пытаюсь создать setOnMarkerClickListener, проходящий по списку массивов и рисующий линию по нажатому маркеру для направления. Однако при каждом нажатии маркера строка генерируется только для последнего маркера, созданного в списке и цикле.
Я думал о добавлении еще одного массива и прохождении по нему для каждого созданного прослушивателя onclick, но поскольку он уже находится в цикле ... он должен просто сгенерировать строку для маркера, на который нажали, и только этот
@SuppressLint("MissingPermission")
override fun onMapReady(map: GoogleMap) {
mMap = map;
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
println("I ran");
println(cons);
LOOP PRINTING THE MARKERS
val iterator = cons.listIterator()
for (i in iterator) {
map.addMarker(
MarkerOptions()
.position(LatLng(i.lat, i.long))
.title(i.name)
)
ONCLICKLISTENER FOR EACH MARKER map.setOnMarkerClickListener(GoogleMap.OnMarkerClickListener {
val path: MutableList<List<LatLng>> = ArrayList()
URLDirections where. its supposed to take in each longitude and latitude on point
val urlDirections = "https://maps.googleapis.com/maps/api/directions/json?origin="+(latLNGOrigin.latitude) + "," + (latLNGOrigin.longitude)+"&destination="+(i.lat) + "," + (i.long)+"&key=<APIKEYHERE>"
print(urlDirections)
val directionsRequest = object : StringRequest(Request.Method.GET, urlDirections, Response.Listener<String> {
response ->
val jsonResponse = JSONObject(response)
// Get routes
// Response.ErrorListener(error("VolleyError"))
val routes = jsonResponse.getJSONArray("routes")
val legs = routes.getJSONObject(0).getJSONArray("legs")
val steps = legs.getJSONObject(0).getJSONArray("steps")
for (i in 0 until steps.length()) {
val points = steps.getJSONObject(i).getJSONObject("polyline").getString("points")
path.add(PolyUtil.decode(points))
}
for (k in 0 until path.size) {
this.mMap!!.addPolyline(PolylineOptions().addAll(path[k]).color(Color.BLUE))
}
}, Response.ErrorListener {
_ ->
}){}
val requestQueue = Volley.newRequestQueue(this)
requestQueue.add(directionsRequest)
true
});
}
locationMgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0L, 0f, this);
}
То, на что я надеюсь, это нарисовать линию на маркер, на который нажали, а также показать название местоположения при нажатии (по какой-то причине слушатель onclick отменяет это, и если кто-то может сказать мне, почему я бы сделал это) будь самым благодарным)