2014-04-05 177 views
1

我正在嘗試學習Google地圖API。我看到一張地圖,但我無法在正確的位置找到標記。我看到它在中國附近海域的某個地方。此外,地圖以(0,0)爲中心,而不是我提供的(經緯度)。這裏是我的代碼Google地圖標記不會顯示

活動

public class HomeActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home_page); 
     GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
     map.addMarker(new MarkerOptions() 
       .position(new LatLng(37.7750, 122.4183)) 
       .title("San Francisco")); 
    } 

} 

home_page.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"/> 

AndroidManifest.xml中

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

    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-feature 
      android:glEsVersion="0x00020000" 
      android:required="true"/> 
    <uses-feature android:name="android.hardware.camera" 
        android:required="true" /> 
    <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"> 
     <meta-data 
       android:name="com.google.android.gms.version" 
       android:value="@integer/google_play_services_version" /> 
     <activity android:name=".HomeActivity" > 
      <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="My SHA1 key"/> 
    </application> 

我錯過了什麼?

+0

你嘗試過擴展FragmentActivity而不是Activity嗎? – JRowan

+0

向我們顯示清單文件。 –

+0

我在中國附近的海洋中看到了這個標記。此外,地圖集中在(0,0),而不是我提供的應該是舊金山的(拉特,長)。 – Prasanna

回答

2

根據谷歌的說法,舊金山的經濟實力是37.7833° N, 122.4167° W。西方的經度應該用負號表示。所以座標應該是像37.7750, -122.4183

1

我想,你需要設置圖標來顯示標記。所以,添加.icon並設置您自己的標記圖標或使用默認圖標。

map.addMarker(new MarkerOptions() 
       .position(new LatLng(37.7750, 122.4183)) 
       .title("San Francisco").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))); 
+0

我添加了更多信息。地圖以0,0爲中心,而不是在我提供的緯度。 – Prasanna

+0

地圖以0,0爲中心。你是什​​麼意思?,更多解釋。 –

+0

活動加載時,我看到一張地圖。但它顯示大西洋爲0,0作爲默認值(lat,lon)。沒有出現我給出的座標。所以問題不僅在於標記圖標,還有整個標記對象本身。 – Prasanna

0

最初,您的GoogleMap可能需要花費時間加載。所以請檢查一下。

if(map!=null) { 

    map.addMarker(new MarkerOptions() 
      .position(new LatLng(37.7750, 122.4183)) 
      .title("San Francisco")); 

} 
+0

但它在同一個線程上。如果我的map對象爲null,那麼當我說map.addMarker時,我會得到一個NullPointerException。 – Prasanna