首先,获取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

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

<uses-library android:name="com.google.android.maps"/>

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.song" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".C7_GoogleMapActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <uses-library android:name="com.google.android.maps"/> </application> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> </manifest>
主布局

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

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <com.google.android.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:apiKey="0HtSsgCEmiiTTfk-g0Oi59Wi2ndgjaMdoLSDPnw" /> </LinearLayout>
主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; @Override public 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 } @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 getPoint(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<Overlay> list = mapview.getOverlays();//获得MapView上原有的overlay对象 list.clear();//清除所有的overlay对象 list.add(new MyOverLay());//加新获取的overlay对象 } class MyOverLay extends Overlay { //画标记的方法 @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { // TODO Auto-generated method stub super.draw(canvas, mapView, shadow); Projection projection=mapView.getProjection(); Point point=new Point();//定义输出的像素点 projection.toPixels(geoPoint, point);//地理坐标转为像素坐标 //绘制图片 //bitmap, left, top, paint canvas.drawBitmap(bitmap, point.x-(bitmap.getWidth()/2), point.y-(bitmap.getHeight()), null); } } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } }
程序效果:下下图为天安门的定位效果



更多相关文章

  1. android 获取sim卡运营商信息(转)
  2. android imeOptions的用法及注意事项
  3. Android下使用TelephonyManager类获取设备电话相关信息
  4. 【Android(安卓)开发教程】编码实现获取与修改预设信息中的值
  5. Android(安卓)获取指向Resource的URI[转]
  6. android 设置程序安装位置
  7. Android:requestWindowFeature应用程序窗体显示状态操作
  8. android VersionCode 与VersionName
  9. 自动打开USB调试

随机推荐

  1. Android(安卓)NDK开发之旅38--FFmpeg视频
  2. Android中ScrollView嵌套WebView
  3. Android四种Activity的加载模式
  4. android面试-面试知识点总结
  5. Android(安卓)UI设计技巧
  6. Android(安卓)studio4.0 解决导入包Error
  7. selector选择器
  8. Android开发实战三之导入现有Android工程
  9. 2011.06.29(2)——— android 完全退出
  10. eclipse 开发 android 快捷键!