gpt4 book ai didi

java - Android map 中的空指针(使用 Google Maps api v2)

转载 作者:行者123 更新时间:2023-11-30 02:40:42 25 4
gpt4 key购买 nike

我对 Android 开发有点陌生,所以请多多包涵。

我正在使用 Google Maps API V2 绘制我的校园 map 。目前我正在尝试在每座建筑物上设置标记,并且我成功地做到了。然而,我决定将标记代码移到一个单独的类中(以减少困惑),但这给我带来了问题。

这是我的主类 MapActivity.java 的相关代码

`public class MapActivity extends Activity implements OnMenuItemClickListener {

private static final LatLng UCTLL = new LatLng(-33.957674, 18.460687); //Coordinates of Jameson Hall

GoogleMap map;
MarkerClass markers;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
setCamera(UCTLL,17);
//setUpHandler();
//aHandler.sendEmptyMessageDelayed(0, 5);
markers.setComSci();
}

@SuppressLint("NewApi")
private void setCamera(LatLng startingpoint, int zoom){
map = ((MapFragment) getFragmentManager()
.findFragmentById(R.id.map)).getMap();
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(UCTLL, 17));//Set Zoom level
map.getUiSettings().setRotateGesturesEnabled(false);// Often rotates when trying to zoom, so rotations are diabled
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(startingpoint)
.zoom(zoom)
.bearing(90)
.tilt(20) // Sets the tilt of the camera
.build();
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}`

这是标记类

public class MarkerClass extends MapActivity{

String itemtype;
LatLng coordinates;
String name;

public void setComSci(){

name = "Computer Science Building";
itemtype = "Building";
coordinates= new LatLng(-33.956812, 18.461021);
Marker comscimark = map.addMarker(new MarkerOptions()
.position(coordinates)
.draggable(true)
.title(name));

}
}

如果我将“setComSci()”方法移动到主类中,它会完美运行,但如果我现在运行代码,我会得到:

`09-11 19:32:22.737: E/AndroidRuntime(11729): FATAL EXCEPTION: main
09-11 19:32:22.737: E/AndroidRuntime(11729): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.map.uctmapfinal/com.map.uctmapfinal.MapActivity}: java.lang.NullPointerException
09-11 19:32:22.737: E/AndroidRuntime(11729): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306)
09-11 19:32:22.737: E/AndroidRuntime(11729): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
`

我是不是傻了?我错过了什么?

编辑:

这里是activity_map.xml

   <?xml version="1.0" encoding="utf-8"?>
<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">


<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<ImageButton
android:id="@+id/searchbutton"
android:layout_width="50dp"
android:layout_height="45dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:contentDescription="@null"
android:onClick="searchmethod"
android:scaleType="fitXY"
android:src="@drawable/search" />

<ImageButton
android:id="@+id/filterrbutton"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:contentDescription="@null"
android:drawable="@drawable/search"
android:onClick="choosefilter"
android:scaleType="fitXY"
android:src="@drawable/filter"
android:state_pressed="true" />

</RelativeLayout>

最佳答案

问题是在 setComSci() 中您使用的是 map.addMarkermapMapActivity 中类。

markers = new  MarkerClass(); //<--- ADD THIS
markers.setComSci(map); //<-- Call using this statement

public class MarkerClass extends MapActivity{
String itemtype;
LatLng coordinates;
String name;
GoogleMap map;

public void setComSci(GoogleMap map){
this.map = map;
name = "Computer Science Building";
itemtype = "Building";
coordinates= new LatLng(-33.956812, 18.461021);
Marker comscimark = map.addMarker(new MarkerOptions()
.position(coordinates)
.draggable(true)
.title(name));
}
}

关于java - Android map 中的空指针(使用 Google Maps api v2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25793751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com