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

首先分享一个使用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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值