以下是我的内容,但我的地图未加载且onMapLoaded
未被调用
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.google.android.gms.maps.MapView android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="80dp"
android:layout_marginTop="30dp"/>
</RelativeLayout>
然后在课堂上我有
public class Activity extends Activity implements GoogleMap.OnMapLoadedCallback {
MapView mMap;
GoogleMap mGooleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_resturant);
mMap = (MapView) findViewById(R.id.mapView);
mGooleMap = mMap.getMap();
}
@Override
public void onMapLoaded() {
Log.i(TAG, "loaaded");
}
}
但onMapLoaded永远不会被称为为什么?
感谢您的帮助
修改
我的xml现在是
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment" />
我也有
public class Activity extends FragmentActivity {
答案 0 :(得分:0)
在 Google文档中,他们举了一个例子 Google Map Example
您可以实施 OnMapReadyCallback 监听器,该监听器在 google地图的示例应用中提供,并覆盖 onMapReady 方法,如下所示: -
// [ time string is DateTime.Now.ToString("M/dd/yyyy h:mm:ss tt") ]
if ( DB.DoUpdate("UPDATE Loads SET Customer='?', FinishTime=?, Carrier='?', Reference='?', Tags='?', Status='Received' WHERE LoadID = ?",
new string[] { Item["Customer"], Item["FinishTime"], Item["Carrier"], Item["Reference"], Item["TagIDs"], Item["LoadID"] }) ) { ... }
在您的布局中添加地图片段,如下所示: -
public class YourCalssName extends AppCompatActivity implements OnMapReadyCallback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
init(); //initialise MapFragment
.....
}
private void init() {
SupportMapFragment mapFragment = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this); // Important to call this method for listener
}
@Override
public void onMapReady(GoogleMap googleMap) {
if (googleMap != null) {
//Do whatever you want to do
}
}
}
答案 1 :(得分:0)
您是否提供了GoogleMap V2密钥? 除了密钥,Google Map还需要您在项目的AppManifest.xml中提及的权限。
ACCESS_NETWORK_STATE - 检查网络状态数据是否可以 是否已下载 INTERNET - 检查互联网连接状态
WRITE_EXTERNAL_STORAGE - 以谷歌地图的形式写入外部存储空间 将地图数据存储在外部存储中 ACCESS_COARSE_LOCATION - 使用WiFi和移动设备确定用户的位置&gt;细胞数据 ACCESS_FINE_LOCATION - 使用GPS OpenGL确定用户的位置 ES V2 - Google Maps V2需要
如果满足上述所有要求,此代码段将为您提供帮助。 公共类MainActivity扩展了Activity {
// Google Map
private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
// Loading map
initilizeMap();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* function to load map. If map is not created it will create it for you
* */
private void initilizeMap() {
if (googleMap == null) {
googleMap = ((MapFragment) getFragmentManager().findFragmentById(
R.id.map)).getMap();
// check if map is created successfully or not
if (googleMap == null) {
Toast.makeText(getApplicationContext(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
}
}
}
@Override
protected void onResume() {
super.onResume();
initilizeMap();
}
}
P.S尝试if(mGoogleMap == null)
检查以确保您拥有Google地图的实例。