Android版高德导航应用开发小结
来源:互联网 发布:淘宝付了定金不付尾款 编辑:程序博客网 时间:2024/06/05 20:01
软硬件环境
- Macbook Pro MGX 72
- Android Studio 1.3.1
- 红米Note增强版
准备工作
- 上高德官网LBS开放平台注册帐户
- 下载SDK和Demo程序
地址: http://lbs.amap.com/api/android-navi-sdk/down/ 给自己的应用申请Key
这个具体步骤高德的官网上都有详细的说明及操作步骤,就不多说了,照着做就行了
Android Studio运行高德导航Demo
修改AndroidManifest.xml
<meta-data android:name="com.amap.api.v2.apikey" android:value="4e8ee81efa8c19c8d9e0b55761f6962d" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
常见错误及解决办法
- android SDK V4和V7冲突?
首先在app下的build.gradle文件中删除provided files(‘libs/android-support-v4.jar’)或者通过File菜单下的Project Structure中的app模块中的Dependencies选项删除。然后在工程libs目录下删除android-support-v4.jar文件。
工程运行后报TTSController初始化失败?
我的做法是把libs中的so库全部copy出来,放在jniLibs文件夹中,jniLibs是自己创建的,跟libs在同一层目录下(其它目录也可以),然后在build.gradle中声明下,以下这段语句放在android标签下即可sourceSets {main { jniLibs.srcDirs = ['jniLibs'] }}
大功告成,来张图秀一下
进行一次定位
private LocationManagerProxy mLocationManager; private AMapLocationListener mLocationListener = new AMapLocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub } @Override public void onLocationChanged(AMapLocation location) { if (location != null && location.getAMapException().getErrorCode() == 0) { Log.e(TAG, "GPS: " + location.getLatitude() + "," + location.getLongitude()); LatLng latLng = new LatLng(mStartPoint.getLatitude(), mStartPoint.getLongitude()); MarkerOptions markerOptions = new MarkerOptions(); markerOptions.position(latLng); markerOptions.title("您当前的位置"); mAmap.addMarker(markerOptions); mAmap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 12)); } else { showToast("定位出现异常,请检查网络连接."); mGPSProgressDialog.dismiss(); //以上海市人民政府为中心显示定位时出错的初始地图 LatLng latLng = new LatLng(31.230429, 121.473709); mAmap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 12)); } }};mLocationManager = LocationManagerProxy.getInstance(this);mLocationManger.requestLocationData(LocationProviderProxy.AMapNetwork, -1, 15, mLocationListener);
兴趣点(Point Of Interest)查询
应用场景一般是这样的: 在输入框中输入关键字如”东方明珠”,系统则提供所有跟”东方明珠”相关的地址信息供用户选择。以下代码是在一个输入框中输入一字符串,经过查询POI Search将相关结果返回,以listview的形式显示出来,经用户点击后将具体的信息写入到输入框中。原来项目需要,这里还记录了对应地址的经纬度数据。
//输入框是一个EditText mEndPointText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { String newText = s.toString().trim(); PoiSearch.Query query = new PoiSearch.Query(newText, "", "021"); query.setPageSize(10); query.setPageNum(1); PoiSearch poiSearch = new PoiSearch(NaviStartActivity.this, query); poiSearch.setOnPoiSearchListener(new PoiSearch.OnPoiSearchListener() { @Override public void onPoiSearched(PoiResult poiResult, int i) { if (i == 0) { for (int j = 0; j < poiResult.getPois().size(); j++) { if (!poiResult.getPois().get(j).getSnippet().isEmpty()) { poiAddressList.add(poiResult.getPois().get(j).getSnippet()); poiLatLonList.add(poiResult.getPois().get(j).getLatLonPoint()); } } poiAddressArray = new String[poiAddressList.size()]; poiAddressArray = poiAddressList.toArray(poiAddressArray); poiLatLngArray = new LatLonPoint[poiLatLonList.size()]; poiLatLngArray = poiLatLonList.toArray(poiLatLngArray); adapterTextview_poi_result = new AdapterTextview(NaviStartActivity.this, poiAddressArray); listView_poi_result.setAdapter(adapterTextview_poi_result); adapterTextview_poi_result.notifyDataSetChanged(); poiAddressList.clear(); poiLatLonList.clear(); } } @Override public void onPoiItemDetailSearched(PoiItemDetail poiItemDetail, int i) { } }); listView_poi_result.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mEndPoints.clear(); mEndPointText.setText(poiAddressArray[position]); mEndPoint = new NaviLatLng(poiLatLngArray[position].getLatitude(), poiLatLngArray[position].getLongitude()); mEndPoints.add(mEndPoint); } }); poiSearch.searchPOIAsyn(); } @Override public void afterTextChanged(Editable s) { } });
地理编码
地理编码,通俗来讲就是将具体的地址(如xx区xx路)转换成经纬度数据,来看代码
GeocodeSearch geocodeSearch = new GeocodeSearch(this); geocodeSearch.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() { @Override public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) { //逆地理编码,经纬度转换成地址 } @Override public void onGeocodeSearched(GeocodeResult geocodeResult, int i) { //地理编码,地址转换成经纬度 if (i == 0) { if (geocodeResult != null && geocodeResult.getGeocodeAddressList() != null && geocodeResult.getGeocodeAddressList().size() > 0) { GeocodeAddress geocodeAddress = geocodeResult.getGeocodeAddressList().get(0); Log.e(TAG, "destination position: " + geocodeAddress.getLatLonPoint()); } } else { Toast.makeText(NaviStartActivity.this, "该地址不存在!", Toast.LENGTH_SHORT).show(); } } }); //以上海地区地址的查询为例,城市代码可以查看高德的文档 GeocodeQuery geocodeQuery = new GeocodeQuery(address, "021"); geocodeSearch.getFromLocationNameAsyn(geocodeQuery);
完整导航Demo的下载地址
http://download.csdn.net/detail/djstavav/9016909
Github地址
https://github.com/djstava/DJAmap
0 0
- Android版高德导航应用开发小结
- Android Camera应用开发小结
- Android开发 ActivityGroupd应用底部导航栏
- Android 系统应用Setting开发小结
- android应用类开发小结--android google map小应用
- 【Android应用开发技术:用户界面】界面导航设计
- 开发基于高德SDK的Android车载导航应用
- EPG应用开发小结
- android开发进阶导航
- Android 地图导航开发
- Android 使用百度导航SDK 2.0小结
- Android 应用介绍、应用导航 ViewPager
- 【应用开发】计时器程序小结
- Android开发小结
- Android开发小结
- Android 开发小结01
- android 应用程序开发小结
- Android开发通讯录小结
- xcode6中如何添加pch文件
- 【socket】案例分析
- 电话之间的电话线
- C++中变量的作用域与生命周期
- SharedPreferences
- Android版高德导航应用开发小结
- 这7点都不知道,难怪你单身
- TimesTen_重建业务日志表
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATI
- 微信公众号开发笔记(一)
- install Apache Hadoop 2.6.0 in Ubuntu
- java中为什么要给类使用代理?它有哪些好处?
- 常用的网络开发库
- 软件工程学习要点