سؤال

لقد اتبعت التعليمات من البرنامج التعليمي Google HellomapView. أحصل على MapView العاملة وما إلى ذلك ولكن لا يتم عرض العنصرين اللذين تمت إضافتهما إلى الخريطة. يبدو أنهم موجودون في مكان ما لأن النقر في الموقع المحدد يوضح الرسالة التي تمت إضافتها إلى العناصر.

تعديل

ها هو رمز المصدر الخاص بي. يجب أن يكون قريبًا جدًا من رمز مصدر Google التعليمي.

public class MapOverlay extends ItemizedOverlay<OverlayItem> {

private List<OverlayItem> overlays = new ArrayList<OverlayItem>();
private Context context;

public MapOverlay(Drawable defaultMarker, Context context) {
    super(defaultMarker);
    overlays = new ArrayList<OverlayItem>();
    this.context = context;
}

@Override
protected OverlayItem createItem(int i) {
    return overlays.get(i);
}

@Override
public int size() {
     return overlays.size();
}

public void addOverlay(OverlayItem overlay) {
    overlays.add(overlay);
    this.populate();
}

@Override
protected boolean onTap(int index) {
  OverlayItem item = overlays.get(index);
  AlertDialog.Builder dialog = new AlertDialog.Builder(this.context);
  dialog.setTitle(item.getTitle());
  dialog.setMessage(item.getSnippet());
  dialog.show();
  return true;
}

}

public class MapsActivity extends MapActivity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    MapView mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);

    MapOverlay overlay = new MapOverlay(this.getResources().getDrawable(
            R.drawable.androidmarker), this);

    overlay.addOverlay(new OverlayItem(new GeoPoint(19240000,-99120000), "Blubb", "See?"));
    mapView.getOverlays().add(overlay);
}

@Override
protected boolean isRouteDisplayed() {
    return false;
}
}

هل الرمز المصدر من البرنامج التعليمي Google متاح في مكان ما؟

هل كانت مفيدة؟

المحلول

المشكلة هي أنني نسيت ضبط حدود السحب. يبدو أنه إذا لم يكن MapView يعرف كيفية محاذاة الصورة ، فلن تظهرها على الإطلاق.

لقد غيرت السطر الأول في مركزي من:

super(defaultMarker);

ل

super(boundCenterBottom(defaultMarker));

وتعرف على عمله الكمال.

نصائح أخرى

في الوقت نفسه ، ليس لدي أي فكرة عن كيفية مساعدتك مباشرة.

هنا نكون الروابط إلى إصدارات مختلفة من مشروع يعمل بالتأكيد مع التراكب ، ربما سيساعدون.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top