2017-09-14 5 views
2

다음은 구현 한 것입니다. 마커를 탭하면 내 마커에 대한 설명을 볼 수 없습니다. 나는 많은 근원을 통해서 갔다 그러나 일 하나를 가져올 수 없었다. 긍정적 인 탈출구를 찾고 있습니다.사용자가 osmdroid 맵에서 마커를 탭하면 마커 스 니펫을 설정하는 방법은 무엇입니까?

public Marker addMarker(GeoPoint p) { 

    Marker marker = new Marker(osm); 
    marker = new Marker(osm); 
    marker.setPosition(p); 
    osm.getOverlays().add(marker); 
    marker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM); 
    marker.setIcon(getResources().getDrawable(R.drawable.black)); 
    marker.setTitle("Marker"); 
    marker.setSnippet("Snippet marker"); 
    marker.setSubDescription("SubDescription marker"); 
    return marker; 

} 
+0

텍스트가없는 버블 (InfoWindow)이 보이거나 버블이 전혀 보이지 않습니까? 생성 후 마커에 onClickListener를 설정하는 코드가 있습니까? –

+0

거품이 전혀 보이지 않고 각 마커 geopoints에 대해 새 객체를 만듭니다. – himagaran

+0

두 번째 질문 : 다시 marker.setOnMarkerClickListener (...)를 호출하고 있습니까? 게시 한 코드에는 없지만 반환 된 값으로 무엇을하는지는 알지 못합니다. –

답변

1

코드가 정확하며 올바르게 작동해야합니다. openstreetmap 라이브러리의 최신 버전을 사용하고 이에 따라 코드를 수정해야합니다. 현재 Latest version은 5.6.5입니다.

신속하게 제작 된 예는 (탭 후)이 결과를주고있다 : 나는 드로어 블을 가지고 있지 않기 때문에

marker.setIcon(getResources().getDrawable(R.drawable.black)); 

:

enter image description here

나는이 줄을 주석했다.

osmbonuspack에서 사용중인 클래스는 osmdroid 라이브러리로 이동되었으므로 더 이상 존재하지 않습니다. 가져 오기를 변경해야합니다 (예 : org.osmdroid.views.overlay.Marker 등). 제공 한 코드에 필요하지 않으므로 osmbonuspack 종속성을 완전히 제거 할 수 있습니다.

당신은 타일 소스의 구성을 변경해야합니다 :

osm.setTileSource(TileSourceFactory.MAPNIK); 

(그러나 OpenStreetMap에 타일에 대한 a usage policy가 명심하시기 바랍니다.)

마지막 주 : 마커 일반적인 문제는 때입니다 onMarkerClickListener 사용자 정의를 설정하면 기본 구현이 호출되지 않습니다. marker.showInfoWindow()를 호출하여 리스너의 마커 창을 열어야합니다. 그러나 이것은 당신의 문제가 아닙니다.

+0

노력 덕분에 고마워, 네가 일하고있어 기뻐. 이 링크는 https://drive.google.com/file/d/0ByXacZESDmJRQWYzblNINEY5Zjg/view에서 libs 섹션 아래에 내 버전이있는 외부 라이브러리를 보여줍니다. 라이브러리를 최신 버전으로 업그레이드 한 후에도 여전히 동일한 문제가 발생합니다. – himagaran

+0

@himagaran 왜 라이브러리의 오래된 버전을 사용하고 있습니까? 프로젝트에 osmdroid 4.3이 있습니다. 이전 버전에는 버그와 문제가있을 수 있습니다. 나는 보통 라이브러리의 소스 코드를 읽음으로써 문제에 대한 해결책을 찾을 수있다. 그러나 나는 가치가 없기 때문에 그 오래된 버전을 배우고 공부하지 않을 것이라고 생각하지 않는다. 또한 왜 gradle을 사용하지 않습니까? 당신은 이미 gradle을 통해 osmdroid의 최신 버전에 대해 물어 보았습니다 : https://stackoverflow.com/questions/45930978/i-get-an-error-on-getinstance-method-even-though-i-followed-the-osmdroid-docum 그리고 당신은 당신의 질문에 답을 얻었습니다. –

+0

내 PC에서 메모리가 부족하기 때문에 gradle을 중단했습니다. 어쨌든 다시 확인하고 알려 드리겠습니다. 다시 한 번 감사합니다 – himagaran