zoukankan      html  css  js  c++  java
  • 基于Android的百度地图实现输入地址返回经纬度信息

    1 解决方案一

    此处解决办法参照自网友文章,对于输入的地址信息要求:城市名+具体地址名。

     

    如果输入的地址信息只有具体地址名,而没有城市名,可能解析不出经纬度信息。还有就是解析出的经纬度再反向解析显示再地图上作为一个地标标记时,会有较明显的偏差,偏差的实际地理距离大概有一千米左右...,这是楼主自己实际上机运行检测的结果,不能完全肯定情况是否是这样,还有一点就是如果解析时可能会使应用出现闪退。我试验的结果,会闪退一次,第二次重新点开应用,才会出现正确的解析结果。

     

    最后,说一下解析的经纬度坐标,最终的数字结果均要除以10的六次方(即1e6),要不然进行反向解析为地标时会报错。还有就是,如果在监听方法中同时解析多个地址,可能会一直闪退。所以,以下代码仅供参考。

     

    具体实现方法:

    public GeoPoint getGeoPointBystr(String str) {
            GeoPoint gpGeoPoint = null;
            if (str!=null) {
                Geocoder gc = new Geocoder(getActivity(), Locale.CHINA);
                List<Address> addressList = null;
                try {
                    addressList = gc.getFromLocationName(str, 1);
                    if (!addressList.isEmpty()) {
                        Address address_temp = addressList.get(0);
                        //计算经纬度
                        double Latitude=address_temp.getLatitude()*1E6;
                        double Longitude=address_temp.getLongitude()*1E6;
                        System.out.println("经度:"+Latitude);
                        System.out.println("纬度:"+Longitude);
                        //生产GeoPoint
                        gpGeoPoint = new GeoPoint((int)Latitude, (int)Longitude);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return gpGeoPoint;
        }

    调用上述方法解析出经纬度:

     GeoPoint result = getGeoPointBystr("武汉市中南民族大学南三门");
    
     Double  num_latitude = (result.getLatitudeE6()) / 1e6;
     Double  num_longitude = (result.getLongitudeE6()) / 1e6;

     

  • 相关阅读:
    js sort方法根据数组中对象的某一个属性值进行排序
    JS中数据类型转换
    DOM盒子模型常用属性client,offset和scroll
    Vue之render渲染函数和JSX的应用
    北漂程序员的真实奋斗史:有辛酸,更有成长
    比高房价更可怕的是,35岁以后你还能干嘛?
    Vue组件间通信方式
    根据对象的某个属性名的值从新排序
    JS隐藏号码中间4位
    javascript之揭示模式
  • 原文地址:https://www.cnblogs.com/liuzhen1995/p/8515585.html
Copyright © 2011-2022 走看看