Инструменты пользователя

Инструменты сайта


android:google_map

Интеграция гугло-карты v2

Библиотеки

Прежде всего необходимо подключить Google Play Services к вашему приложению.

Его необходимо установить вместе с sdk и он находится:

/sdk/extras/google/google_play_services/libproject/google-play-services_lib

Ключи

Сначала регистрируем приложение в апи консоле: https://code.google.com/apis/console

Не забудьте дать права на Google Maps Android API v2 на вкладке Services

На вкладке API Access - создаём ключи

Далее нужно получить md5 hash

Для этого выполняем команду

"C:\Program Files (x86)\Java\jdk1.7.0_03\bin\keytool" -v -list -alias <алиас> -storepass <пароль> -keystore <файл с ключами> > gmap_r
"C:\Program Files (x86)\Java\jre7\bin\keytool" -v -list -alias androiddebugkey -storepass android -keystore debug.keystore > gmap_d

Путь к файлу keytool - необходимо указать свой

Далее находим строку вида

 SHA1: E3:C1:1D:EF:6C:D3:D8:4C:C1:D9:4C:A7:6D:DB:11:A2:AC:4B:5C:76

Только что обнаружил, последняя sdk этот sha1 сертификат показывает при экспорте подписанного приложения, так что можно его прям от туда взять и не заморачиваться с командной строкой

И как указанно:

One SHA1 certificate fingerprint and package name (separated by a semicolon) per line. Example: 45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0;com.example

Добавляем к ней имя из нашего приложения и создаём андроид-ключ

Манифест

В AndroidManifest.xml добавляем с раздел <application> в самый конец перед закрывающимся тегом </application>:

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

Вместо API_KEY - подставляете ключ созданный на предыдущем этапе

Далее добавьте следующий код, заменив com.example.mapdemo with на ваш the package name.

<permission
        android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
<uses-permission android:name="com.example.mapdemo.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"/>
 

Сохраните AndroidManifest.xml и перезапустите приложение

Активити

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.Fragment;
import com.google.android.gms.maps.GoogleMap;
 
 
  public class DetailsActivity extends FragmentActivity {
	private GoogleMap map;
	private MapView mapView;
 
	private void setUpMapIfNeeded() {
		if (map == null) {
			map = ((SupportMapFragment) getSupportFragmentManager()
					.findFragmentById(R.id.map)).getMap();
			if (map != null) {
				setUpMap();
			}
		}
	}
 
	private void setUpMap() {
 
		String adress = LocalSettings.getString(this, RR.OPTION_ADDRESS, "");
 
		double lat = LocalSettings.getDouble(this, "lat", 0);
		double lon = LocalSettings.getDouble(this, "lon", 0);
		String s = adress;
		if (lat != 0) {
			LatLng p = new LatLng(lat, lon);
			s = null;
			map.addMarker(new MarkerOptions().position(p).title(adress));
            map.animateCamera( CameraUpdateFactory.newLatLngZoom(p, 15.0f ) );
		}
		new GoogleSearchClicker(this, map,  adress, null, s).execute();
	}
 
   }  

Вроде пишут что не обязательно какое-то спец активити базовым делать, но я наследую от FragmentActivity

И в лэйоут:

                <fragment
                    android:id="@+id/map"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    class="com.google.android.gms.maps.SupportMapFragment" />
/var/www/source/data/pages/android/google_map.txt · Последнее изменение: 2024/02/05 12:40 (внешнее изменение)