`

百度地图中android获取经纬度和地方名称

 
阅读更多

package com.liufeng.baidumap;  

  

import Android.os.Bundle;  

import Android.view.View;  

import Android.view.View.OnClickListener;  

import Android.widget.Button;  

import Android.widget.EditText;  

import Android.widget.TextView;  

  

import com.baidu.mapapi.BMapManager;  

import com.baidu.mapapi.GeoPoint;  

import com.baidu.mapapi.MKAddrInfo;  

import com.baidu.mapapi.MKDrivingRouteResult;  

import com.baidu.mapapi.MKPoiInfo;  

import com.baidu.mapapi.MKPoiResult;  

import com.baidu.mapapi.MKSearch;  

import com.baidu.mapapi.MKSearchListener;  

import com.baidu.mapapi.MKTransitRouteResult;  

import com.baidu.mapapi.MKWalkingRouteResult;  

import com.baidu.mapapi.MapActivity;  

  

/** 

 * 根据经纬度查询地址信息 

 *  

 * @author liufeng 

 * @date 2011-05-03 

 */  

public class QueryAddressActivity extends MapActivity {  

    // 定义地图引擎管理类   

    private BMapManager mapManager;  

    // 定义搜索服务类   

    private MKSearch mMKSearch;  

  

    private EditText longitudeEditText;  

    private EditText latitudeEditText;  

    private TextView addressTextView;  

    private Button queryButton;  

  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.query_address);  

  

        // 初始化MapActivity   

        mapManager = new BMapManager(getApplication());  

        // init方法的第一个参数需填入申请的API Key   

        mapManager.init("285B415EBAB2A92293E85502150ADA7F03C777C4", null);  

        super.initMapActivity(mapManager);  

  

        // 初始化MKSearch   

        mMKSearch = new MKSearch();  

        mMKSearch.init(mapManager, new MySearchListener());  

  

        // 通过id查询在布局文件中定义的控件   

        longitudeEditText = (EditText) findViewById(R.id.longitude_input);  

        latitudeEditText = (EditText) findViewById(R.id.latitude_input);  

        addressTextView = (TextView) findViewById(R.id.address_text);  

        queryButton = (Button) findViewById(R.id.query_button);  

  

        // 给地址查询按钮设置单击事件监听器   

        queryButton.setOnClickListener(new OnClickListener() {  

            @Override  

            public void onClick(View v) {  

                // 用户输入的经度值   

                String longitudeStr = longitudeEditText.getText().toString();  

                // 用户输入的纬度值   

                String latitudeStr = latitudeEditText.getText().toString();  

  

                try {  

                    // 将用户输入的经纬度值转换成int类型   

                    int longitude = (int) (1000000 * Double.parseDouble(longitudeStr));  

                    int latitude = (int) (1000000 * Double.parseDouble(latitudeStr));  

  

                    // 查询该经纬度值所对应的地址位置信息   

                    mMKSearch.reverseGeocode(new GeoPoint(latitude, longitude));  

                } catch (Exception e) {  

                    addressTextView.setText("查询出错,请检查您输入的经纬度值!");  

                }  

            }  

        });  

    }  

  

    @Override  

    protected boolean isRouteDisplayed() {  

        return false;  

    }  

  

    @Override  

    protected void onDestroy() {  

        if (mapManager != null) {  

            // 程序退出前需调用此方法   

            mapManager.destroy();  

            mapManager = null;  

        }  

        super.onDestroy();  

    }  

  

    @Override  

    protected void onPause() {  

        if (mapManager != null) {  

            // 终止百度地图API   

            mapManager.stop();  

        }  

        super.onPause();  

    }  

  

    @Override  

    protected void onResume() {  

        if (mapManager != null) {  

            // 开启百度地图API   

            mapManager.start();  

        }  

        super.onResume();  

    }  

  

    /** 

     * 内部类实现MKSearchListener接口,用于实现异步搜索服务 

     *  

     * @author liufeng 

     */  

    public class MySearchListener implements MKSearchListener {  

        /** 

         * 根据经纬度搜索地址信息结果 

         *  

         * @param result 搜索结果 

         * @param iError 错误号(0表示正确返回) 

         */  

        @Override  

        public void onGetAddrResult(MKAddrInfo result, int iError) {  

            if (result == null) {  

                return;  

            }  

            StringBuffer sb = new StringBuffer();  

            // 经纬度所对应的位置   

            sb.append(result.strAddr).append("/n");  

  

            // 判断该地址附近是否有POI(Point of Interest,即兴趣点)   

            if (null != result.poiList) {  

                // 遍历所有的兴趣点信息   

                for (MKPoiInfo poiInfo : result.poiList) {  

                    sb.append("----------------------------------------").append("/n");  

                    sb.append("名称:").append(poiInfo.name).append("/n");  

                    sb.append("地址:").append(poiInfo.address).append("/n");  

                    sb.append("经度:").append(poiInfo.pt.getLongitudeE6() / 1000000.0f).append("/n");  

                    sb.append("纬度:").append(poiInfo.pt.getLatitudeE6() / 1000000.0f).append("/n");  

                    sb.append("电话:").append(poiInfo.phoneNum).append("/n");  

                    sb.append("邮编:").append(poiInfo.postCode).append("/n");  

                    // poi类型,0:普通点,1:公交站,2:公交线路,3:地铁站,4:地铁线路   

                    sb.append("类型:").append(poiInfo.ePoiType).append("/n");  

                }  

            }  

            // 将地址信息、兴趣点信息显示在TextView上   

            addressTextView.setText(sb.toString());  

        }  

  

        /** 

         * 驾车路线搜索结果 

         *  

         * @param result 搜索结果 

         * @param iError 错误号(0表示正确返回) 

         */  

        @Override  

        public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) {  

        }  

  

        /** 

         * POI搜索结果(范围检索、城市POI检索、周边检索) 

         *  

         * @param result 搜索结果 

         * @param type 返回结果类型(11,12,21:poi列表 7:城市列表) 

         * @param iError 错误号(0表示正确返回) 

         */  

        @Override  

        public void onGetPoiResult(MKPoiResult result, int type, int iError) {  

        }  

  

        /** 

         * 公交换乘路线搜索结果 

         *  

         * @param result 搜索结果 

         * @param iError 错误号(0表示正确返回) 

         */  

        @Override  

        public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) {  

        }  

  

        /** 

         * 步行路线搜索结果 

         *  

         * @param result 搜索结果 

         * @param iError 错误号(0表示正确返回) 

         */  

        @Override  

        public void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) {  

        }  

    }  

}  

   3)AndroidManifest.xml中的配置     

 

 

<?xml version="1.0" encoding="utf-8"?>  

<manifest xmlns:Android="http://schemas.android.com/apk/res/android"  

      package="com.liufeng.baidumap"  

      Android:versionCode="1"  

      Android:versionName="1.0">  

    <application Android:icon="@drawable/icon" android:label="@string/app_name">  

        <activity Android:name=".QueryAddressActivity" android:label="@string/app_name">  

            <intent-filter>  

                <action Android:name="android.intent.action.MAIN" />  

                <category Android:name="android.intent.category.LAUNCHER" />  

            </intent-filter>  

        </activity>  

    </application>  

    <uses-sdk Android:minSdkVersion="4" />  

  

    <!-- 访问网络的权限 -->  

    <uses-permission Android:name="android.permission.INTERNET" />  

    <!-- 访问精确位置的权限 -->  

    <uses-permission Android:name="android.permission.ACCESS_FINE_LOCATION" />  

    <!-- 访问网络状态的权限 -->  

    <uses-permission Android:name="android.permission.ACCESS_NETWORK_STATE" />  

    <!-- 访问WIFI网络状态的权限 -->  

    <uses-permission Android:name="android.permission.ACCESS_WIFI_STATE" />  

    <!-- 改变WIFI网络状态的权限 -->  

    <uses-permission Android:name="android.permission.CHANGE_WIFI_STATE" />  

    <!-- 读写存储卡的权限 -->  

    <uses-permission Android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

    <!-- 读取电话状态的权限 -->  

    <uses-permission Android:name="android.permission.READ_PHONE_STATE" />  

</manifest>   

locationManager = (LocationManager) GPSTestActivity.this.getSystemService(Context.LOCATION_SERVICE);   

 

String provier = LocationManager.GPS_PROVIDER;   location = locationManager.getLastKnownLocation(provier);

 

   if (location == null) {    Criteria criteria = new Criteria();    criteria.setAccuracy(Criteria.ACCURACY_FINE);    

 

criteria.setAltitudeRequired(false);  

 

  criteria.setBearingRequired(false);  

 

  criteria.setCostAllowed(false);    

 

criteria.setPowerRequirement(Criteria.POWER_LOW);    

 

provier = locationManager.getBestProvider(criteria, true);  

 

  location = locationManager.getLastKnownLocation(provier);   }

分享到:
评论

相关推荐

    百度地图根据地址获取经纬度

    在移动应用开发中,如Android或iOS,你可以分别使用百度地图的Android SDK或iOS SDK,它们提供了类似的接口来实现地址解析和地图显示。 总结来说,通过百度地图API,开发者可以方便地根据用户输入的地址获取到...

    通过百度地图,根据地名获取经纬度,内有详解

    本篇文章将详细讲解如何通过百度地图API实现从地名获取经纬度的过程,并探讨如何利用这些经纬度进行定位。 首先,我们要了解经纬度的概念。经纬度是地球上地理位置的一种表示方式,经度(Longitude)是从本初子午线...

    百度地图根据获取定位附近街道列表

    标题 "百度地图根据获取定位附近街道列表" 描述的是一个Android应用开发的实践,主要涉及如何利用百度地图API来获取用户当前位置并展示其周边的街道列表。在这个过程中,开发者需要集成百度地图SDK,并通过GPS或者...

    最新版百度地图api,根据位置获取所在地的经纬度并定位

    根据最新版的百度地图api手写的一个demo,项目名称和appkey已配置好,可直接调试或使用,若想使用到自己项目中,直接替换即可,本demo主要根据所在位置获取经纬度,并根据经纬度定位,比较适合新手,仅供参考,若有...

    Android 百度地图个人开发demo 源码程序.zip

    这里我们关注的是一个2015年的"Android百度地图个人开发demo 源码程序",它提供了丰富的功能,可以帮助开发者快速理解和实践如何在Android应用中集成并操作百度地图。 首先,这个Demo展示了**地图图层展示**,这是...

    Android百度地图定位后获取周边位置在列表中展示并选择

    在Android开发中,集成百度地图API来实现定位和周边位置搜索是一项常见的功能。这个功能让应用能够为用户提供基于地理位置的服务,比如寻找附近的餐馆、商店或者导航。以下将详细讲解如何在Android应用中实现这一...

    安卓调用第三方导航高德、百度、腾讯,以及经纬度转换,判断应用是否存在

    在Android开发中,调用第三方地图导航应用如高德、百度和腾讯,是常见的功能需求。这涉及到系统级的意图(Intent)操作,以及不同坐标系之间的转换。本篇文章将详细探讨这些知识点。 首先,调用第三方导航应用通常...

    百度地图街获取

    这使得用户可以在第三方应用中享受百度地图的街景服务,增强了应用的实用性和用户体验。 【压缩包子文件的文件名称列表】:百度地图截获器0.3Beta 这可能是一款第三方工具,用于帮助用户更方便地获取或保存百度...

    android城市列表和百度地图相关

    这包括在Android Studio中配置依赖,申请API密钥,理解和使用百度地图提供的各种服务。开发过程中需要注意权限管理,确保应用有访问网络、位置等敏感信息的权限。 最后,**Demo**文件很可能是项目的一个示例或者可...

    Android通过百度api获取地名城市名

    在Android开发中,有时我们需要获取用户的地理位置信息,例如地名和城市名,这可以通过集成百度地图API来实现。本文将详细介绍如何在Android应用中利用百度API获取地名和城市名,以及相关的步骤和技术要点。 首先,...

    Android应用源码之百度地图API 之 定位周边搜索POI.zip

    通过这个源码,开发者可以学习如何在Android应用中集成百度地图API,实现定位和周边搜索功能,为用户提供方便的位置服务。同时,源码也展示了如何处理定位和搜索的异步操作,以及地图与UI的交互,对理解Android多...

    Android百度地图的搜索及附近地址的检索2

    在文件名称“baiduPoiGps”中,我们可以推测这可能是一个示例项目或者包含了一些与百度地图POI搜索和GPS定位相关的代码文件。在实际开发中,你需要导入相关的依赖库,如baidumap-sdk,然后参考这些代码实现地图的...

    android_仿微信位置选取的(百度地图)

    本文将深入探讨如何在Android应用中实现一个类似微信的位置选取功能,利用百度地图API进行集成和定制。首先,我们需要了解百度地图API的基础知识以及如何将其嵌入到Android项目中。 百度地图API提供了丰富的地图...

    百度地图定位及周边信息

    百度地图作为国内主流的地图应用之一,提供了一系列强大的定位和服务功能,帮助用户准确找到自己的位置并获取周边信息。以下将详细讲解如何利用百度地图进行定位、查看周边信息以及如何拖拽地图进行交互。 1. **...

    Android百度地图的搜索及附近地址的检索

    在Android开发中,集成百度地图API能够为应用提供丰富的地理定位和地图服务功能,包括地图显示、定位、路径规划以及搜索附近的地点等。本篇将深入探讨如何在Android应用中实现百度地图的搜索及附近地址的检索。 ...

    Android 开发百度地图检索关键字demo

    "Android 开发百度地图检索关键字demo"是一个实例,它演示了如何利用百度地图API来实现关键词搜索功能,从而找到地名或商家,并获取它们的名称和经纬度坐标。下面将详细解释这个过程涉及的关键知识点。 1. **百度...

    android 百度地图附近位置列表显示

    至于`BaiduMapsApiDemo`这个文件名,它可能是一个完整的示例项目,包含了上述步骤的完整代码,可以帮助开发者快速理解和学习如何在Android应用中集成百度地图并显示附近位置列表。通过研究这个示例,你可以更好地...

    Android代码-百度地图API-定位周边搜索POI源码.zip

    在Android开发中,百度地图API是一个非常重要的工具,它提供了丰富的功能,如定位、地图展示、路线规划等。...通过深入学习和理解这段源码,开发者能够更好地掌握在Android应用中使用百度地图API实现各种功能的方法。

    基于百度地图SDK实现定位和查找附近车位的android demo

    在Android平台上,开发一款应用来实现基于百度地图SDK的定位及查找附近车位的功能,涉及到多个技术点和步骤。首先,我们需要理解百度地图SDK的核心功能,然后深入探讨如何将这些功能集成到Android应用中。 **一、...

    百度地图 android 开发

    地图显示是百度地图Android API的基础,它允许开发者在应用程序中集成地图视图。首先,你需要在AndroidManifest.xml中添加必要的权限,比如访问网络和读取位置的权限。然后,引入百度地图SDK,并创建一个MapView对象...

Global site tag (gtag.js) - Google Analytics