关于逆地理编码的一些记录

来源:互联网 发布:arch linux安装教程 编辑:程序博客网 时间:2024/05/17 02:42

首先分享一个使用android studio常见的问题

手贱删了jdk,重装以后就遇到这个问题

Error: Execution failed for task ':app:processDebugResources'. > com.android.ide.common.process.ProcessException:         org.gradle.process.internal.ExecException: Process 'command 'C:\Users\Vishnu  Ruhela\AppData\Local\Android\sdk\build-tools\21.1.2\aapt.exe'' finished with non- zero exit value 1

相信这个问题还是比较常见的,如新建module时。。
解决方法:这里写图片描述
详情见图,解决方法来自stackoverflow论坛
确实比度娘靠谱多了

接下来就是逆地理编码的一些问题记录

private void showLocation(final Location location) {       new Thread(new Runnable() {           @Override           public void run() {                HttpURLConnection urlConnection=null;                try{                    String sin="http://api.map.baidu.com/geocoder/v2/?ak=HVIGzbKMkxyCI3sKZwyjWnaRIdtudAtI&mcode=56:13:F6:43:D9:B8:61:E3:01:1B:01:26:2D:F4:5F:E9:B0:6A:A4:97;com.example.maplocationtest&location="                            +39.983424+","+116.322987+"&output=json&pois=1";                    URL url=new URL(sin);                    urlConnection= (HttpURLConnection) url.openConnection();                    urlConnection.setRequestMethod("GET");                    urlConnection.setConnectTimeout(8000);                    urlConnection.setReadTimeout(8000);                    urlConnection.setRequestProperty("Charset","utf-8");                  if(urlConnection.getResponseCode()==200) {                    InputStream in=urlConnection.getInputStream();                    BufferedReader reader=new BufferedReader(new InputStreamReader(in));                    String line ;                    StringBuilder response = new StringBuilder();                    line=reader.readLine();                    while (line!= null) {                            response.append(line);                             line=reader.readLine();                    }                    Log.d("Succeed",response.toString());                    JSONObject jsonObject1=new JSONObject(response.toString());                      JSONObject jsonObject=jsonObject1.getJSONObject("result");                      if(jsonObject!=null) {                          String address = jsonObject.getString("formatted_address");                          Message message = new Message();                          message.what = SHOW_LOCATION;                          message.obj = address.toString();                          handler.sendMessage(message);                      }                  }             //       JSONObject jsonObject=new JSONObject(response.toString());               //     JSONArray array=jsonObject.getJSONArray("result");                        }catch (Exception e){                            e.printStackTrace();                        }           }       }).start();    }

耗时操作写在线程了这没啥好说,关键在定义URL地址是国内是用不了google Map,用了百度地图进行测试(PS:个人在这里卡了好久,android刚开始入门,见谅)ak位置填的是在百度地图API创建的密钥匙,若不改这里直接打开网址,会出现,{Status: 220,……} 乱码错误,第二个一定要添加mocode此位置填写安全码,不填会出现{Status:102,。。。。},此为验证开发者。location部分填写lat,lng地址(经纬度),output这里选择返回的数据类型。(PS:个人亲测使用win10 的IE打不开用json返回的数据类型 如:无法解析用户xx.js)换个浏览器就可以
HttpCilent在API22被废弃,所以这边使用httpUrlConnection发送http请求
tips:若坚持使用httpclient在File->project Structure->module->选择自己的module->Dependencies->选择加号->library dependency添加httpclient包名即可使用httpclient

然后是解析JSON数据格式,(这里也卡了挺久,开始没搞明白JSONObject and jsonArray的用法)它们的主要区别是,object用来解析对象,array解析数组,更直观的表现为array解析【】类型数据,object 解析{ },这里只返回一个地址直接使用jsonObject解析,使用getObject一层层进入result ->formatted address

最后在AndroidManifest添加

这个不能忘
PS:都是一些很小的问题,或许很简单,但是的确卡了自己很久,所以记录一番喽

0 0
原创粉丝点击