【问题标题】:kotlin google map apikotlin 谷歌地图 api
【发布时间】:2019-05-24 14:15:01
【问题描述】:

我是 kotlin 的初中生,我尝试在谷歌地图上显示特定机场的纬度和经度。使用异步任务获取机场纬度和经度的数据 json,然后在谷歌地图中获取意图坐标。但是当我尝试在谷歌地图代码中意图代码时,我在坐标文本意图下得到了红线。

  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


}

【问题讨论】:

    标签: android google-maps kotlin


    【解决方案1】:

    您的问题是“我在坐标文本下有红线”。在您添加到问题的代码中,coordinateText 使用了两次:在函数 onMapReady 和 onProgressUpdate 中。您是在这两个函数中得到红线还是仅在 onMapReady 中得到红线?

    LatLng 类有one constructor,它需要两个双参数。似乎您给它一个字符串参数(等于 JSON 位置的纬度,您在函数 onProgressUpdate 中提取)。

    要测试这个想法,你可以尝试替换

    val sydney = LatLng(coordinatesText)
    

    类似的东西

    val sydney = LatLng(-34.0, 151.0)
    

    【讨论】:

    • 你的回答与我的问题无关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2011-03-25
    • 2016-05-09
    相关资源
    最近更新 更多