我正在使用google maps api V2 for android。当我加载地图时,它完全加载 但是,当我尝试使用https://developers.google.com/maps/documentation/android/views#changing_a_maps_view
中的代码时 public class MainActivity extends FragmentActivity {
private static final LatLng SYDNEY = new LatLng(-33.88,151.21);
private static final LatLng MOUNTAIN_VIEW = new LatLng(37.4, -122.1);
SupportMapFragment fragment = new SupportMapFragment();
private GoogleMap map = fragment.getMap();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, fragment).commit();
map.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY,15));
// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn());
// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(MOUNTAIN_VIEW) // Sets the center of the map to Mountain View
.zoom(17) // Sets the zoom
.bearing(90) // Sets the orientation of the camera to east
.tilt(30) // Sets the tilt of the camera to 30 degrees
.build(); // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world" />
</RelativeLayout>
当我运行代码时,应用程序在启动之前崩溃
当我尝试使用UiSettings类时,我不仅使用了它。因此,我可能会遗漏一些东西:)
任何帮助解决我的问题将不胜感激。
错误:
02-15 17:44:41.701: E/AndroidRuntime(17078): FATAL EXCEPTION: main
02-15 17:44:41.701: E/AndroidRuntime(17078): java.lang.RuntimeException: Unable to s tart activity ComponentInfo{com.example.anywhere_reminder/com.example.anywhere_reminder.MainActivity}: java.lang.NullPointerException: CameraUpdateFactory is not initialized
02-15 17:44:41.701: E/AndroidRuntime(17078): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970)
02-15 17:44:41.701: E/AndroidRuntime(17078): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
02-15 17:44:41.701: E/AndroidRuntime(17078): at android.app.ActivityThread.access$600(ActivityThread.java:128)
02-15 17:44:41.701: E/AndroidRuntime(17078): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
02-15 17:44:41.701: E/AndroidRuntime(17078): at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 17:44:41.701: E/AndroidRuntime(17078): at android.os.Looper.loop(Looper.java:137)
02-15 17:44:41.701: E/AndroidRuntime(17078): at android.app.ActivityThread.main(ActivityThread.java:4517)
02-15 17:44:41.701: E/AndroidRuntime(17078): at java.lang.reflect.Method.invokeNative(Native Method)
02-15 17:44:41.701: E/AndroidRuntime(17078): at java.lang.reflect.Method.invoke(Method.java:511)
02-15 17:44:41.701: E/AndroidRuntime(17078): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:995)
02-15 17:44:41.701: E/AndroidRuntime(17078): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
02-15 17:44:41.701: E/AndroidRuntime(17078): at dalvik.system.NativeStart.main(Native Method)
02-15 17:44:41.701: E/AndroidRuntime(17078): Caused by: java.lang.NullPointerException: CameraUpdateFactory is not initialized
02-15 17:44:41.701: E/AndroidRuntime(17078): at com.google.android.gms.internal.at.a(Unknown Source)
02-15 17:44:41.701: E/AndroidRuntime(17078): at com.google.android.gms.maps.CameraUpdateFactory.J(Unknown Source)
02-15 17:44:41.701: E/AndroidRuntime(17078): at com.google.android.gms.maps.CameraUpdateFactory.newLatLngZoom(Unknown Source)
02-15 17:44:41.701: E/AndroidRuntime(17078): at com.example.anywhere_reminder.MainActivity.onCreate(MainActivity.java:30)
02-15 17:44:41.701: E/AndroidRuntime(17078): at android.app.Activity.performCreate(Activity.java:4579)
02-15 17:44:41.701: E/AndroidRuntime(17078): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
02-15 17:44:41.701: E/AndroidRuntime(17078): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
02-15 17:44:41.701: E/AndroidRuntime(17078): ... 11 more
答案 0 :(得分:1)
我认为这些是你代码中的问题。
SupportMapFragment fragment = new SupportMapFragment();
private GoogleMap map = fragment.getMap();
对象片段为空,您的GoogleMap地图对象可能为空。你应该这样做。
SupportMapFragment sMapFragment;
GoogleMap map;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//get the MapFragment in your layout
fragment =(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
//get the GoogleMap object
map = fragment.getMap();
}
现在你已准备好在地图上做点什么了。示例缩放到特定位置。
if(map!=null){
LatLng SYDNEY = new LatLng(-33.88,151.21);
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, 16);
map.animateCamera(cameraUpdate);
}
我希望这会有所帮助。快乐的编码:)
答案 1 :(得分:0)
如果GoogleMap可用,您只能使用CameraUpdateFactory。
我会尝试以下,把你的 私人GoogleMap map = fragment.getMap();
map = fragment.getMap();
if(map != null){
map.moveCamera(CameraUpdateFactory.newLatLngZoom(SYDNEY,15));
// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn());
// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(MOUNTAIN_VIEW) // Sets the center of the map to Mountain View
.zoom(17) // Sets the zoom
.bearing(90) // Sets the orientation of the camera to east
.tilt(30) // Sets the tilt of the camera to 30 degrees
.build(); // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}