2013-03-01 103 views
1

我找到了解決方案。該地圖可能還沒有被初始化,嘗試的GetMap()在生命週期的後期點,像的onResume()Google Maps Android API v2 - 添加標記失敗

我的代碼是

protected void onResume() { 
     super.onResume(); 
     int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); 
     if (resultCode == ConnectionResult.SUCCESS){ 
      Toast.makeText(getApplicationContext(), 
        "isGooglePlayServicesAvailable SUCCESS", 
        Toast.LENGTH_LONG).show(); 

      if(gMap == null){ 
       gMap = mMapView.getMap(); 
       if(gMap != null){ 
        gMap.setMyLocationEnabled(true); 
        gMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
       }else{ 
        Toast.makeText(getApplicationContext(), 
          "cannot getMap!", 
          Toast.LENGTH_LONG).show(); 
       } 
      } 

     }else{ 
      GooglePlayServicesUtil.getErrorDialog(resultCode, this, RQS_GooglePlayServices); 
     } 
    } 
+0

請發佈完整的代碼提供解決方案.. – moDev 2013-03-01 10:00:05

回答

0

編輯你下面的步驟完成:

Add Play Services Library in project : 
Eclipse > import > Android > Existing Android code in to workspace 
Browse you SDK path like ~/android-sdk-linux/extras/google/google_play_services 
import that project in to workspace 

將上述庫項目添加到您的項目中。在Android設備模擬器只能運行不

它是簡單的檢查,下面的代碼:

import android.os.Bundle; 
import android.support.v4.app.FragmentManager; 
import com.actionbarsherlock.app.SherlockFragmentActivity; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.GoogleMap.OnMapClickListener; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class MainActivity extends Activity { 
     private GoogleMap MAP; 
     @Override 
     protected void onCreate(Bundle arg0) { 
      // TODO Auto-generated method stub 
      //setTheme(R.style.Theme_Sherlock); 
      super.onCreate(arg0); 
      setContentView(R.layout.activity_main); 
      FragmentManager myFM = getSupportFragmentManager(); 
      SupportMapFragment myMAPF = (SupportMapFragment) myFM 
        .findFragmentById(R.id.fragment1); 
      MAP = myMAPF.getMap(); 
      MAP.setMyLocationEnabled(true); 
      MAP.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
      MAP.setOnMapClickListener(new OnMapClickListener() { 
       @Override 
       public void onMapClick(LatLng point) { 
        // TODO Auto-generated method stub 
        MAP.addMarker(new MarkerOptions().position(point).title( 
           point.toString())); 
       } 
      }); 
     } 
} 

更詳細的檢查:clickhere & clickhere

按你的代碼檢查:

Marker marker = map.add(new MarkerOptions() 
      .position(new LatLng(37.7750, 122.4183)) 
      .title("San Francisco") 
      .snippet("Population: 776733")); 

    gMap.addMarker(marker); 
+0

這裏的問題是GMAP = mMapView.getMap(); >>>>返回null – 2013-03-01 10:14:03

+0

使用支持v4 jar文件的片段。在此之前,請從此處再次檢查您的所有流程:http://dj-android.blogspot.in/2013/02/android-google-map-v2-part-1.html所有內容都是完美的或不是簡單的確認。 – 2013-03-01 10:17:34

+0

這不適合我。 – 2013-03-01 10:51:49

0

試試這個添加自定義標記:

public void placingCurrentMarkerWithBalloon(String address) 
    { 
     LatLng current_latlng = new LatLng(cur_lat, cur_lng); 
     gMapview.addMarker(new MarkerOptions().position(current_latlng) 
        .title("Address") 
        .snippet(address) 
.icon(BitmapDescriptorFactory.fromResource(R.drawable.person_marker)) 
/*.icon(BitmapDescriptorFactory.defaultMarker())*/ 
).showInfoWindow(); 
} 
相關問題