Open Street Maps で動作する HelloGoogleMaps アプリを再現しようとしていますが、OSMdroid に項目別オーバーレイを含めるのに問題があります。
いくつかのリソースを調べましたが、OsmItemizedOverlay のエラーを修正する方法がわかりません - OsmItemizedOverlay を間違って作成しているか、OsmItemizedOverlay と ItemizedOverlay を混同していると思いますか? しかし、私が変更しようとしたものはすべて、より多くのエラーを引き起こしました...「暗黙のスーパーコンストラクター ItemizedOverlay() は定義されていません。別のコンストラクターを明示的に呼び出す必要があります」 - 誰かがクラス定義をまっすぐにするのを手伝ってくれることを願っていますか?
本当にありがとう!
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;
}
}