2014-04-05 133 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