programing

Android 베타 0.9에서 ItemizedOverlay 및 OverlayItem 사용

nicescript 2021. 1. 16. 09:19
반응형

Android 베타 0.9에서 ItemizedOverlay 및 OverlayItem 사용


누구든지 ItemizedOverlaysAndroid Beta 0.9에서 사용할 수 있습니까? 작동하도록 할 수는 없지만 내가 잘못한 것이 있는지 또는이 기능을 아직 사용할 수 없는지 확실하지 않습니다.

나는 ItemizedOverlayOverlayItem클래스 를 사용하려고 노력 하고 있습니다. 그들의 의도 된 목적은지도 마커 (Google지도 매쉬업에서 볼 수있는)를 시뮬레이션하는 것이지만지도에 표시하는 데 문제가있었습니다.

비슷한 기술을 사용하여 나만의 맞춤 오버레이를 추가 할 수 ItemizedOverlays있지만 작동하지 않는 것 뿐입니다 .

내 자신의 클래스를 구현 ItemizedOverlay하고 재정의 createItem하면 클래스의 새 인스턴스를 만드는 것이 작동하는 것처럼 보이지만 (이에 서 추출 할 수 OverlayItems있음) 맵 Overlay목록에 추가해도 제대로 표시되지 않습니다.

이것은 ItemizedOverlay클래스 Overlay를 내 .NET에 추가하는 데 사용하는 코드 MapView입니다.

// Add the ItemizedOverlay to the Map
private void addItemizedOverlay() {
  Resources r = getResources();
  MapView mapView = (MapView)findViewById(R.id.mymapview);
  List<Overlay> overlays = mapView.getOverlays();

  MyItemizedOverlay markers = new MyItemizedOverlay(r.getDrawable(R.drawable.icon));
  overlays.add(markers);

  OverlayItem oi = markers.getItem(0);
  markers.setFocus(oi);
  mapView.postInvalidate();
}

어디는 MyItemizedOverlay다음과 같이 정의된다

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {
  public MyItemizedOverlay(Drawable defaultMarker) {
    super(defaultMarker);
    populate();
  }

  @Override
  protected OverlayItem createItem(int index) {
    Double lat = (index+37.422006)*1E6;
    Double lng = -122.084095*1E6;
    GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());

    OverlayItem oi = new OverlayItem(point, "Marker", "Marker Text");
    return oi;
  }

  @Override
  public int size() {
    return 5;
  } 
}

완벽을 기하기 위해 여기 Android 그룹 에서 Reto의 게시물에 대한 토론을 반복 하겠습니다 .

드로어 블에 경계를 설정하면 트릭을 수행하는 것 같습니다.

Drawable defaultMarker = r.getDrawable(R.drawable.icon);

// You HAVE to specify the bounds! It seems like the markers are drawn
// through Drawable.draw(Canvas) and therefore must have its bounds set
// before drawing.
defaultMarker.setBounds(0, 0, defaultMarker.getIntrinsicWidth(),
    defaultMarker.getIntrinsicHeight());

MyItemizedOverlay markers = new MyItemizedOverlay(defaultMarker);
overlays.add(markers);

그건 그렇고, 위의 내용은 MarcelP.info의 데모에서 뻔뻔하게 찢어졌습니다 . 또한 여기에 좋은 방법이 있습니다.

ReferenceURL : https://stackoverflow.com/questions/26362/using-itemizedoverlay-and-overlayitem-in-android-beta-0-9

반응형

'programing' 카테고리의 다른 글

wpf를 사용하여 dll을 단일 .exe로 병합  (0) 2021.01.17
ECMAScript v 6이 표준이되는시기  (0) 2021.01.16
REST-가능한 여러 식별자 지원  (0) 2021.01.16
iPhone Simulator에서 소리 끄기  (0) 2021.01.16
벡터 변환  (0) 2021.01.16