Android MapView显示为空

表现:

              

main.xml中:

     

MainActivity.java:

 import android.os.Bundle; import android.view.Menu; import com.google.android.maps.MapActivity; public class MainActivity extends MapActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } } 

活动可以开始。 但是在MapView中什么都没有。 可以显示小网格的地图,我认为它带有MapView,但没有加载地图。 可能有什么不对? 我使用的是Google API v3。 但是这段代码来自使用API​​ v1的教科书。

我得到解决的方式,我不得不这样做:

 final MapView mapView = (MapView)fragmentView.findViewById(R.id.map_fieldLocation); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @Override public void onMapReady(GoogleMap googleMap) { LatLng coordinates = new LatLng(match.match.LocationLatitude, match.match.LocationLongitude); googleMap.addMarker(new MarkerOptions().position(coordinates).title(match.match.LocationAddress)); googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(coordinates, 15)); mapView.onResume(); } }); 

我缺少的重要部分是你必须在调用getMapAsync()之前调用onCreate()方法,一旦调用了回调,你需要在MapView对象上调用onResume()

这完全解决了我。

这是你自己class里的样子:

 public class MainActivity extends MapActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if (getView() != null) { final MapView mapView = (MapView)getView().findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @Override public void onMapReady(GoogleMap googleMap) { LatLng coordinates = new LatLng(match.match.LocationLatitude, match.match.LocationLongitude); googleMap.addMarker(new MarkerOptions().position(coordinates).title(match.match.LocationAddress)); googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(coordinates, 15)); mapView.onResume(); } } } } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } } 

希望这可以帮助!

我想你正在试图实施的谷歌地图版本搞得一团糟。 根据您使用的代码,您似乎正在尝试使用Google Maps API V1。

问题在于,您现在无法为Google Map API V1生成新的API密钥,此版本已弃用,Google不会为其提供新密钥。

从评论中可以看出,在API控制台中,您没有激活正确的API。 请查看此博客文章,了解如何为Android版Google Map API V2生成API密钥:

Google Maps API V2键

接下来,请阅读以下指南以在您的应用程序中实现此版本:

Google Maps API V2

在Android中使用Map API V2 for google map。 访问此链接可能对您有所帮助。

它比旧版本更好,也更容易。