отображать имя переменной вместо значения в цикле foreach - PullRequest
0 голосов
/ 05 марта 2020

Хиии использую карты в моем приложении. Я должен добавить несколько маркеров на моей карте. Я поместил все маркеры в ArrayList. и теперь с помощью foreach l oop ставлю маркеры. До сих пор все работает нормально. но я хочу разместить название для этого маркера. и этот заголовок должен быть именем переменной, которую я добавил в список массивов. Это мой массив

 placeslist  = ArrayList<LatLng>()
            pietrasanta = getLocationFromAddress(this, "pietrasanta the italian resturant")
            Ikea_alexandra = getLocationFromAddress(this, "Ikea alexandra resturant,317")
            candlenut_resturant = getLocationFromAddress(this, "candlenut resturant,17A ")

            placeslist.add(pietrasanta )
            placeslist.add(Ikea_alexandra)
            placeslist.add(candlenut_resturant)

, получающий lnglat из этого метода getLocationFromAddress

 fun getLocationFromAddress(context: Context, strAddress: String): LatLng {
        val coder: Geocoder = Geocoder(context)
        val address1: List<Address>
        lateinit var p1: LatLng



        try {
            address1 = coder.getFromLocationName(strAddress, 5)
            if (address1 == null) {

            }
            val location: Address = address1.get(0)
            location.latitude
            location.latitude
            p1 = LatLng(location.latitude, location.longitude)


        } catch (e: Exception) {
            e.printStackTrace()
        }

        return p1
    }

А теперь с помощью foreach l oop добавляю маркеры в onMapReady ()

  placeslist.forEach(){
            mMap.addMarker(MarkerOptions().position(it).title())    
        }

пока здесь все нормально. проблема возникает, когда я пытаюсь добавить .title () вместо заголовка, я хочу отображать переменные, обозначаемые в arraylist, вместо значений, которые являются pietrasanta, Ikea_alexandra, candlenut_resturant с соответствующими маркерами. Может кто-нибудь, пожалуйста, помогите мне, как добавить имена переменных в виде строки вместо ее значения.

Я пытался с этим mMap.addMarker(MarkerOptions().position(it).title(it.toString()))
, но вместо имени значения широты и долготы отображаются в качестве заголовка.

1 Ответ

0 голосов
/ 05 марта 2020

Вместо использования ArrayList используйте HashMap:

var placeslist : HashMap<String, LatLng> = HashMap<String, LatLng> ()

placeslist.put("pietrasanta", getLocationFromAddress(this, "pietrasanta the italian 
resturant"))
placeslist.put("Ikea_alexandra", getLocationFromAddress(this, "Ikea alexandra 
resturant,317"))
placeslist.put("candlenut_resturant", getLocationFromAddress(this, "candlenut 
resturant,17A "))

и для извлечения данных:

for(key in placeslist.keys){
        // here key will be your identifier (as you want variable name)
        // placeslist[key] will be you LatLng object for particular key
}

, но не добавляйте дублирующееся имя ключа в ту же хэш-карту.

...