Kotlin Google Map API - PullRequest
       3

Kotlin Google Map API

0 голосов
/ 26 декабря 2018

Я младший в Котлине, и я пытаюсь показать широту и долготу для конкретного аэропорта на карте Google.с помощью Async Task, чтобы получить данные JSON для широты и долготы для аэропорта, а затем намеренные координаты на картах Google.но когда я пытаюсь ввести код в код карты Google, я получаю красную линию под координатами с координатами.

  override fun onMapReady(p0: GoogleMap?) {
        val sydney = LatLng(coordinatesText)
        p0!!.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
        p0.moveCamera(CameraUpdateFactory.newLatLng(sydney))
    }

основной класс деятельности

class MainActivity : AppCompatActivity(), OnMapReadyCallback {


    lateinit var mapFragment : SupportMapFragment
    lateinit var googleMap: GoogleMap
    @SuppressLint("MissingPermission")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val url = "xxxxx/airport.json?code=BGW"
        Download().execute(url)
        mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment

        mapFragment.getMapAsync(this@MainActivity)

    }

    override fun onMapReady(p0: GoogleMap?) {
        val sydney = LatLng(coordinatesText)
        p0!!.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
        p0.moveCamera(CameraUpdateFactory.newLatLng(sydney))
    }
    //    full class for json api
    inner class Download : AsyncTask<String,String,String>(){

        override fun onPreExecute() {
        }
        //        for build connection
        override fun doInBackground(vararg p0: String?): String{

            try {

                val url = URL(p0[0])
                val urlConnect = url.openConnection() as HttpURLConnection
                urlConnect.connectTimeout = 700
                val inputStream = urlConnect.inputStream
                val dataJsonAsStr = covertStreamToString(urlConnect.inputStream)
                publishProgress(dataJsonAsStr)

            }   catch (e: Exception){

            }
            return ""
        }

        //        for get items from json api
        override fun onProgressUpdate(vararg values: String?) {

            val json= JSONObject(values[0])
            val result = json.getJSONObject("result")
            val response =result.getJSONObject("response")
            val airport =response.getJSONObject("airport")
            val pluginData =airport.getJSONObject("pluginData")
            val details =pluginData.getJSONObject("details")
            val position =details.getJSONObject("position")
            val latitude =position.getString("latitude")

            coordinatesText.setText(latitude)

        }

        override fun onPostExecute(result: String?) {

        }

    }

    //    for connection api
    fun covertStreamToString (inputStream: InputStream): String {

        val bufferReader = BufferedReader(InputStreamReader(inputStream))
        var line:String
        var  allString:String=""
        try {
            do{
                line=bufferReader.readLine()
                if (line!=null)
                    allString+=line
            }while (line!=null)

            bufferReader.close()
        }catch (ex:java.lang.Exception){}

        return allString;
    }

    //    full class for json api


}

1 Ответ

0 голосов
/ 27 декабря 2018

Ваша проблема в том, что "у меня красная линия под координатами текста".В коде, который вы добавили в свой вопрос, argumentsText используется дважды: в функциях onMapReady и onProgressUpdate.Вы получаете красную линию в обеих функциях или только в onMapReady?

Класс LatLng имеет один конструктор , который ожидает два двойных параметра.Похоже, вы даете ему один параметр String (который равен широте от позиции JSON, которую вы извлекли в функции onProgressUpdate).

Чтобы проверить эту идею, вы можете попробовать заменить

val sydney = LatLng(coordinatesText)

с чем-то вроде

val sydney = LatLng(-34.0, 151.0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...