Как получить конкретные экземпляры маркеров через цикл - PullRequest
0 голосов
/ 30 апреля 2019

Итак, я пытаюсь создать 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 отменяет это, и если кто-то может сказать мне, почему я бы сделал это) будь самым благодарным)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...