0
我在Android中使用谷歌地圖v2時遇到了一個問題。我想要一個MapView作爲佈局的一部分。我可以將MapView與標記一起繪製,但是除非我點擊地圖,否則瓷磚本身不會加載。對於每次點擊我都會繪製一個額外的圖塊(因此需要點擊4或5次來獲取整個地圖)。谷歌地圖v2瓷磚僅在Android上的點擊後繪製
我正在使用Maps V2,但在這種特殊情況下,不在片段中。作爲說明,地圖在我使用MapFragment的另一個地方可以正常工作。
以下是代碼的重要片段:
片段活性的:
佈局public class ViewNodeDetailsGame extends MapActivity implements View.OnClickListener, OnMapReadyCallback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBundle = savedInstanceState;
setContentView(R.layout.activity_view_node_details_game);
// Maps related
MapsInitializer.initialize(this);
// ... the data is fetched asynchronously here. Then, getLocation() is called
}
private void getLocation(final LinearLayout llLocation) {
mMapView = (MapView)llLocation.findViewById(R.id.map);
mMapView.onCreate(mBundle);
mMapView.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
LatLng sydney = new LatLng(-34, 151);
map.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
map.animateCamera(CameraUpdateFactory.newLatLng(sydney));
map.getUiSettings().setMyLocationButtonEnabled(true);
map.getUiSettings().setZoomControlsEnabled(true);
map.getUiSettings().setCompassEnabled(true);
map.getUiSettings().setAllGesturesEnabled(true);
}
@Override
public void onResume() {
super.onResume();
if (mMapView != null) {
mMapView.onResume();
}
}
@Override
public void onPause() {
super.onPause();
if (mMapView != null) {
mMapView.onPause();
}
}
@Override
public void onLowMemory() {
super.onLowMemory();
if (mMapView != null) {
mMapView.onLowMemory();
}
}
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
if (mMapView != null) {
mMapView.onSaveInstanceState(outState);
}
}
@Override
public void onDestroy() {
super.onDestoy();
if (mMapView != null) {
mMapView.onDestroy();
}
}
片段。這種佈局以編程方式添加:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:padding="5dp"
android:orientation="vertical">
<com.google.android.gms.maps.MapView
android:id="@+id/map"
android:clickable="true"
android:enabled="true"
android:layout_width="match_parent"
android:layout_height="250dp" />
<!-- More stuff below -->
我包括我的API_KEY在AndroidManifest.xml文件:
<!-- lots of stuff above this... -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AIza --rest of my key here--"
/>
</application>
下圖顯示了瓷磚畫我每次點擊獲得的進展。任何提示都表示讚賞。
是的,其實我是。我只是沒有在片段中添加。我只是更新了代碼。 – zundi
getLoation()在onCreate()中調用還是從不同的callstack調用? – duanbo1983
asynctask是在'onCreate()'中啓動的,當完成檢索數據時,'getLocation()'方法被調用。 – zundi