android网络-GoogleMap之GPS定位

首先,获取MapAPIKey

1,获取android keystore位置

eclipse->window->preferences->android->build

在default debug keystore下找到android key的存储位置C:\Users\acer\.android\debug.keystore,备用。

2,用jdk提供的keytool为android keystore生成认证指纹

进入cmd,按下图输入

C:\Program Files\Java\jdk1.7.0_03\bin>keytool -list -alias androiddebugkey -keystore "C:\Users\acer\.android\debug.keystore" -v

密码输入:android或不输。

取MD5值,备用


3,输入网址http://code.google.com/intl/zh-CN/android/maps-api-signup.html

,登陆Google账号,并且在申请页面上输入得到的MD5认证指纹,点击”Generate API Key”来获取我们得到的API Key

然后,创建基于Google APIs的AVD,以及创建基于Google APIs的工程

就是把所有Android2.2的都改为Google APIs

最后,编写程序

程序效果:运行程序,send经纬度后,界面标记根据经纬度变化

manifest

注意添加internet和gps的权限,以及添加googlemap的library








主布局

让map可点击和拖拽 android:clickable="true"
获取得到的key           android:apiKey="0HtSsgCEmiiTTfk-g0Oi59Wi2ndgjaMdoLSDPnw"


主activity

package com.song;import java.util.List;import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;public class C7_GoogleMapActivity extends MapActivity {/** Called when the activity is first created. */MapView mapview;MapController controller;Location location;LocationManager manager;GeoPoint geoPoint;Bitmap bitmap;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);mapview=(MapView)findViewById(R.id.mapview);  manager=(LocationManager)getSystemService(LOCATION_SERVICE);location=manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.pos);//生成bitmap位图mapview.setBuiltInZoomControls(true);//实现放大缩小功能manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10, new LocationListener() {@Override public void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stubgetPoint(location);}});}public void getPoint(Location location){controller=mapview.getController();//注意参数是纬度,经度。E6为10的6次方
//       GeoPoint geoPoint=new GeoPoint((int)(37.898989*1E6), (int)(122.989898*1E6));geoPoint=new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6));//定位到哪个点controller.animateTo(geoPoint);//获得悬浮图层List list = mapview.getOverlays();//获得MapView上原有的overlay对象list.clear();//清除所有的overlay对象list.add(new MyOverLay());//加新获取的overlay对象}class MyOverLay extends Overlay{  //画标记的方法@Overridepublic void draw(Canvas canvas, MapView mapView, boolean shadow) {// TODO Auto-generated method stubsuper.draw(canvas, mapView, shadow);Projection projection=mapView.getProjection();Point point=new Point();//定义输出的像素点projection.toPixels(geoPoint, point);//地理坐标转为像素坐标//绘制图片//bitmap, left, top, paintcanvas.drawBitmap(bitmap, point.x-(bitmap.getWidth()/2), point.y-(bitmap.getHeight()), null);} }@Overrideprotected boolean isRouteDisplayed() {// TODO Auto-generated method stubreturn false;}
}
程序效果:下下图为天安门的定位效果




本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部