【发布时间】:2014-09-11 17:35:30
【问题描述】:
我对 Android 开发有点陌生,所以请多多包涵。
我正在使用 Google Maps API V2 制作我的校园地图。目前我正在尝试在每个建筑物上设置标记,并且我成功地做到了。但是,我决定将标记代码移到单独的类中(以减少混乱),但这给我带来了问题。
这是我的主类 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>
【问题讨论】:
-
你能把
R.layout.activity_map的xml贴出来 -
我已经编辑了我的答案
标签: java android google-maps google-maps-api-3