我正在尝试在 Open Street Maps 中重现一个有效的 HelloGoogleMaps 应用程序 - 但我无法在 OSMdroid 中包含逐项叠加。
我查看了几个资源,但我无法弄清楚如何修复 OsmItemizedOverlay 上的错误 - 我想我错误地构造了 OsmItemizedOverlay 或者与 OsmItemizedOverlay 和 ItemizedOverlay 混淆了?但是我尝试更改的所有内容都引发了更多错误...“隐式超级构造函数 ItemizedOverlay() 未定义。必须显式调用另一个构造函数”“无法从 OverlayItem 类型对非静态方法 setMarker(Drawable) 进行静态引用” - 我希望有人能帮我弄清楚类定义吗?
非常感谢!
package com.example.osmdroiddemomap;
import java.util.ArrayList;
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import org.osmdroid.api.IMapView;
import org.osmdroid.views.*;
import org.osmdroid.views.overlay.*;
import org.osmdroid.views.overlay.OverlayItem.HotspotPlace;
public class OsmItemizedOverlay extends ItemizedOverlay<OverlayItem> {
Context mContext;
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
//ERRORS are raised by the following 3 lines:
public OsmItemizedOverlay(Drawable defaultMarker, Context context) {
OverlayItem.setMarker(defaultMarker);
OverlayItem.setMarkerHotspot(HotspotPlace.CENTER);
mContext = context;
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
protected boolean onTap(int index) {
OverlayItem item = mOverlays.get(index);
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(item.getTitle());
dialog.setMessage(item.getSnippet());
dialog.show();
return true;
}
@Override
public boolean onSnapToItem(int arg0, int arg1, Point arg2, IMapView arg3) {
// TODO Auto-generated method stub
return false;
}
}