google_map_api_v2_地图导航.docx_第1页
google_map_api_v2_地图导航.docx_第2页
google_map_api_v2_地图导航.docx_第3页
google_map_api_v2_地图导航.docx_第4页
google_map_api_v2_地图导航.docx_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

这是我自己写的一个google 最新的基于map api v2的地图导航功能,本人的机器是索尼爱立信 mt11i,系统为2.3.3亲测完全可用,google map api v2许可码请自己去谷歌申请,你过你的测试系统api版本11(android3.0)以上的话,注意两处map = (SupportMapFragment) (this.getSupportFragmentManager().findFragmentById(R.id.map).getMap();和布局文件中的support均可以省略support欢迎加群讨论技术方面的问题:杭州android开发讨论群(216045581)LocationManager locMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);/获得LocationManager引用locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);/提供设备最后已知位置,这里有3种,GPS_PROVIDER GPS获得,NETWORK_PROVIDER网络获得,PASSIVE_PROVIDER被动提供其他应用程序提供locMgr.getAllProviders();/返回所有能用或不能用的提供程序locMgr.getProvider(Provider name);/返回指定提供程序locMgr.isProviderEnabled(provider);/判断指定提供程序是否能用locMgr.getProviders(true);/返回立即可以使用的提供程序locMgr.getProviders(criteria, true)/返回可以使用的提供程序,并且用criteria对象指定条件locMgr.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0,/ 间隔多少毫秒通知 0,/ 最小间隔距离变化通知 locListener);/在onResume()中注册接收位置跟新事件的接收器locMgr.removeUpdates(locListener);/在onPause()中删除注册LocationListener locListener = new LocationListener()/位置监听器 /位置信息更新时调用 public void onLocationChanged(Location location) if (location != null) Toast.makeText(getBaseContext(), New location latitude + location.getLatitude() + longitude + location.getLongitude()+, Toast.LENGTH_SHORT).show(); /当禁用的提供程序被调用时会立即调用 public void onProviderDisabled(String provider) /用户启用提供程序时被调用 public void onProviderEnabled(String provider) /状态变化时被调用 public void onStatusChanged(String provider, int status, Bundle extras) ; startActivityForResult(new Intent(vider.Settings.ACTION_LOCALE_SETTINGS), 0);/请求用户打开GPS/*LocationManager 接近提醒*/geo模式:用uri的前缀来过滤数据类型String PROX_ALERT = ent.action.PROXIMITY_ALERT;IntentFilter iFilter = new IntentFilter(PROX_ALERT);/设置了过滤器所接受的行为iFilter.addDataScheme(geo);/设置了过滤器说接受的uri前缀String geo = geo:+lat+,+lon;Intent intent = new Intent(PROX_ALERT, Uri.parse(geo);/在intent中添加uri匹配intentFilterpIntent1 = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);/创建PendingIntentlocMgr.addProximityAlert(lat, lon, radius, 6000L, pIntent1);/纬度,经度,半径,超时,触发后的行为AndroidManifest.xml 布局文件 菜单弹出框布局文件 这个是activitypackage com.example.v2_test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import com.google.android.gms.maps.CameraUpdateFactory;import com.google.android.gms.maps.GoogleMap;import com.google.android.gms.maps.SupportMapFragment;import com.google.android.gms.maps.model.CameraPosition;import com.google.android.gms.maps.model.LatLng;import com.google.android.gms.maps.model.Marker;import com.google.android.gms.maps.model.MarkerOptions;import com.google.android.gms.maps.model.Polyline;import com.google.android.gms.maps.model.PolylineOptions;import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.graphics.Color;import android.location.Criteria;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.app.FragmentActivity;import android.util.Log;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.EditText;import android.widget.ImageButton;public class MainActivity extends FragmentActivity List list;Polyline polyline;private Location location;private CameraPosition cameraPosition;private GoogleMap map;String start = ;String end = ;double lat = 0.0;double lng = 0.0;double endlat = 0.0;double endlng = 0.0;LocationManager locationManager;ImageButton local;LocationListener llistener;Marker marker;private ProgressDialog progressdialog;private Handler mHandler = new Handler() public void handleMessage(Message msg) switch (msg.what) case 1: progressdialog.dismiss();if(polyline!=null)polyline.remove();map.clear();markMysition();map.addMarker(new MarkerOptions().position(new LatLng(endlat, endlng).title(MainActivity.this.getLocation(endlat, endlng);LatLng last = null;for (int i = 0; i 0) JSONObject jsonobject = new JSONObject(resultString);JSONArray jsonArray = new JSONArray(jsonobject.get(results).toString();resultString = ;for (int i = 0; i jsonArray.length(); i+) resultString = jsonArray.getJSONObject(i).getString(formatted_address);address += resultString; catch (Exception e) finally get.abort();client = null;return address;/ 通过输入信息解析json获取路线private void getDirection(String start, String endposition) String DresultString = ;String Durl = /maps/api/directions/json?origin=+ lat + , + lng + &destination= + endlat + , + endlng+ &sensor=true&mode=driving;HttpClient Dclient = new DefaultHttpClient();HttpGet Dget = new HttpGet(Durl);HttpResponse response;try response = Dclient.execute(Dget);HttpEntity Dentity = response.getEntity();BufferedReader DbuffReader = new BufferedReader(new InputStreamReader(Dentity.getContent();StringBuffer DstrBuff = new StringBuffer();String Dresult = null;while (Dresult = DbuffReader.readLine() != null) DstrBuff.append(Dresult);DresultString = DstrBuff.toString(); catch (Exception e) try final JSONObject jsonObject = new JSONObject(DresultString);JSONArray routeArray = jsonObject.getJSONArray(routes);JSONObject routes = routeArray.getJSONObject(0);JSONObject overviewPolylines = routes.getJSONObject(overview_polyline);String encodedString = overviewPolylines.getString(points);Log.d(test: , encodedString);list = decodePoly(encodedString); catch (JSONException e) e.printStackTrace(); catch (ArrayIndexOutOfBoundsException e) System.err.println(Caught ArrayIndexOutOfBoundsException: + e.getMessage();/ 填写起始地点以得到路线导航private void editpoint() LayoutInflater factory = LayoutInflater.from(MainActivity.this);/ 获得自定义对话框final View view = factory.inflate(R.layout.getdirections, null);AlertDialog navigate = new AlertDialog.Builder(MainActivity.this).setIcon(android.R.drawable.ic_menu_edit).setTitle(获取路线).setView(view).setPositiveButton(确定, new OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) dialog.dismiss();EditText st = (EditText) view.findViewById(R.id.start);EditText en = (EditText) view.findViewById(R.id.end);start = st.getText().toString();end = en.getText().toString();progressdialog = ProgressDialog.show(MainActivity.this,正在获取路线, 请稍等, true);new Thread(new Runnable() Overridepublic void run() / TODO Auto-generated method stubgetlatlng(end);getDirection(我的位置, end);mHandler.sendEmptyMessage(0);mHandler.sendEmptyMessage(1);).start();).setNegativeButton(取消, null).create();navigate.show();/ 根据地理名称获得起始点和终点的经纬度private void getlatlng(String end) StringBuilder stringBuilder = new StringBuilder();try HttpPost httppost = new HttpPost(/maps/api/geocode/json?address=+ end + &sensor=false);HttpClient client = new DefaultHttpClient();HttpResponse response;stringBuilder = new StringBuilder();response = client.execute(httppost);HttpEntity entity = response.getEntity();InputStream stream = entity.getContent();int b;while (b = stream.read() != -1) stringBuilder.append(char) b); catch (ClientProtocolException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();JSONObject jsonObject = new JSONObject();try jsonObject = new JSONObject(stringBuilder.toString(); catch (JSONException e) / TODO Auto-generated catch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论