android google map研究

研究了一天,最后居然卡在了获取本地位置上,不知道是不是我的G330D问题,反正网络位置是获取不了,看来得用百度地图试试,还是总结一下吧

1)获取keystore的SHA1

 android google map研究_第1张图片

eclipse上面就可以看到debug.keystore的位置,这个位置跟ANDROID_SDK_HOME这个环境变量有关系,然后通过命令

keytool -v -list -storepass android -keystore keystore位置

可以看到keystoresha1,如图

android google map研究_第2张图片

2)申请google map api key

用google的账号登录https://code.google.com/apis/console/ (没有的话就先注册一个吧)

选择”Services“把下面的选项激活



然后选择“API Access”-》“Create New Android Key”


android google map研究_第3张图片

在输入框输入:keystore的sha1码;将要用到地图功能的apk的包名,我这里是com.jack.test,然后按“Create”,则会生成api key


android google map研究_第4张图片


3)下载需要的开发库并配置

通过“Android SDK Manager”下载对应版本的“Google APIs”和Extras的“Google Play Services”并配置android项目如下


其中Library未刚刚下载的Google Play Services的lib_project,位置在android_sdk\extras\google\google_play_services\libproject下

android google map研究_第5张图片

4)修改AndroidManifest.xml

增加以下内容

    <permission
        android:name="com.jack.test.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />


    <uses-permission android:name="com.jack.test.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <!--
     The following two permissions are not required to use
     Google Maps Android API v2, but are recommended.
    -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyDTcenhM4YQBR2b05a-x2yb1plFWtsXUqw" />

其中出现com.jack.test.的地方需要改成对应的包名,meta-data的Android:value换成对应的api key


5)layout增加地图控件

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


6)Activity实现显示地图数据,并定位到指定经纬度,加上标识

mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
				.getMap();
		mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
		LocationManager locationManager	= (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
		// Define a listener that responds to location updates
		LocationListener locationListener = new LocationListener() {
		    public void onLocationChanged(Location location) {
		    	Log.i("MainActivity", "onLocationChanged");
				LatLng myLatLng = new LatLng(location.getLatitude(), location.getLongitude());
//				mMap.setMyLocationEnabled(true);
				CameraPosition cameraPosition = new CameraPosition.Builder()
						.target(myLatLng) // Sets the center of the map to Mountain
						.zoom(17) // Sets the zoom
						.build(); // Creates a CameraPosition from the builder
				mMap.animateCamera(CameraUpdateFactory
						.newCameraPosition(cameraPosition));
				myMarker = mMap.addMarker(new MarkerOptions()
						.position(myLatLng)
						.title("My Home")
						.snippet("Hello")
						.icon(BitmapDescriptorFactory
								.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
				mMap.setOnMarkerClickListener(new OnMarkerClickListener() {

					@Override
					public boolean onMarkerClick(Marker arg0) {
						if (arg0.equals(myMarker)) {
							Toast.makeText(MainActivity.this, "You click me!",
									Toast.LENGTH_LONG).show();
						}
						return false;
					}
				});
		    }

		    public void onStatusChanged(String provider, int status, Bundle extras) {}

		    public void onProviderEnabled(String provider) {}

		    public void onProviderDisabled(String provider) {}
		  };

		// Register the listener with the Location Manager to receive location updates
		locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 100, locationListener);


7)运行apk

需要注意手机应该先安装“google play market“和”google play services“

版权声明:本文为博主原创文章,未经博主允许不得转载。

你可能感兴趣的:(android,Google,map,地图)