2013-10-28 3 views
0

필자는 "Open GPS Tracker"이라는 오픈 소스 응용 프로그램을 사용하고 있었고, Google지도를 작성하는 데 어려움을 겪고있었습니다. 내 패키지 이름과 SHA1 지문을 기반으로 자체 API 키를 얻었지만 그리드 이외에는 아무것도 표시 할 수 없습니다. 매니페스트 사용 권한 및 map.xml 파일은 아래에 있습니다. 어떤 제안이라도 대단히 감사하겠습니다.Android Google지도 API 키?

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="nl.sogeti.android.gpstracker" 
android:installLocation="auto" 
android:versionCode="85" 
android:versionName="0.5" > 

<uses-sdk 
    android:minSdkVersion="7" 
    android:targetSdkVersion="16" /> 

<supports-screens 
    android:largeScreens="true" 
    android:normalScreens="true" 
    android:smallScreens="true" /> 

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

<uses-feature 
    android:name="android.hardware.location.gps" 
    android:required="true" /> 

<application 
    android:allowClearUserData="true" 
    android:description="@string/app_name" 
    android:hardwareAccelerated="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <uses-library android:name="com.google.android.maps" /> 

} MAPS.XML

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:id="@+id/mapScreen" 
> 
<com.google.android.maps.MapView 
    android:id="@+id/myMapView" 

    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:enabled="true" 
    android:clickable="true" 
    android:apiKey="my key is here" 
    android:visibility="visible" /> 
<!-- Release   : 0bmdf4-ggC50QWBY1OgGRutQ9bIboIy11OczZbw --> 
<!-- Emulator  : 0bmdf4-ggC50QJGdjml6Turq0NJdMhKFQNdhkYA --> 

<org.osmdroid.views.MapView 
    android:id="@+id/myOsmMapView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    renderer="CLOUDMADESTANDARDTILES" 
    cloudmadeStyle="1" 
    android:visibility="gone" 
/> 

답변

1

안드로이드에 대한 두 개의지도 API가 있습니다지도 V1 및지도 V2가.

지도 V1은 com.google.android.maps.MapView을 사용합니다. Maps V1 용 API 키를 가져올 수 없으므로 API 키를 얻기 위해 SHA1 지문을 사용하지 않습니다. 지도 V1은 더 이상 사용되지 않습니다.

지도 V2는 Google API 콘솔을 통해 API 키를받는 SHA1 지문을 사용하는 API 키를 사용합니다. 그러나 이는 com.google.android.maps.MapView 또는 <uses-library android:name="com.google.android.maps" />을 사용하지 않습니다.

모든지도 V1 요소를 앱에서 삭제하고 move over completely to Maps V2을 삭제하는 것이 좋습니다.

0

여기를 참조하십시오. 매니페스트 파일의 키로 api 키를 변경하고 다음 단계를 따르세요. 및 google_play_services_lib 프로젝트가 프로젝트의 작업 공간에만 존재해야합니다.

매니페스트 파일 :

<uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="18" /> 

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

    <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" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.geeklabs.map.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="replace with your API key"/> 

    </application> 

</manifest> 

MainActivity.java는 :

package com.geeklabs.map; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

} 

activity_main.xml :

<?xml version="1.0" encoding="utf-8"?> 
    <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/map" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:name="com.google.android.gms.maps.MapFragment"/> 

후이 알려 얻었다.

0

버전 1은 더 이상 사용되지 않으므로 Version2 (V2)를 사용해 보시고 Jelly Bean (4.0 이상)이 설치된 장치에서 작동하는 것이 좋습니다. 그래서 4.0 이하의 장치에서 실행하려면 안드로이드 지원 라이브러리가 필요합니다.

공용 클래스 MainActivity가 FragmentActivity가 리스너 (OnMapClickListener)를 구현 확장 조각지도를 표시하는 XML 레이아웃에 사용 되었기 때문에 FragmentActivity와 MainActivity를 확장

.. LocationListener

private GoogleMap myMap; 

    myMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();` 

또한 XML이 추가 :

<fragment 
android:id="@+id/map" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
class="com.google.android.gms.maps.SupportMapFragment" />