나는 this google map for android을 언급했다. 안드로이드의 모든 마커에 대한 이미지가있는 정보 창 표시를 원합니다.안드로이드에 마커를 클러스터링하는 정보 창을 추가하는 방법은 무엇입니까?
답변
MyItem 클래스
import com.google.android.gms.maps.model.LatLng;
import com.google.maps.android.clustering.ClusterItem;
public class MyItem implements ClusterItem {
private LatLng mPosition;
private String mLatitude = "";
private String mStoreLogo = "";
private String mLongitude = "";
@Override
public LatLng getPosition() {
return mPosition;
}
public void setPosition(LatLng mPosition) {
this.mPosition = mPosition;
}
public LatLng getmPosition() {
return mPosition;
}
public void setmPosition(LatLng mPosition) {
this.mPosition = mPosition;
}
public String getmLatitude() {
return mLatitude;
}
public void setmLatitude(String mLatitude) {
this.mLatitude = mLatitude;
}
public String getmLongitude() {
return mLongitude;
}
public void setmLongitude(String mLongitude) {
this.mLongitude = mLongitude;
}
public String getmStoreLogo() {
return mStoreLogo;
}
public void setmStoreLogo(String mStoreLogo) {
this.mStoreLogo = mStoreLogo;
}
}
YourActivity 클래스 :
public class Map extends FragmentActivity implements
ClusterManager.OnClusterClickListener<MyItem>,
ClusterManager.OnClusterInfoWindowClickListener<MyItem>,
ClusterManager.OnClusterItemClickListener<MyItem>,
ClusterManager.OnClusterItemInfoWindowClickListener<MyItem> {
private ClusterManager<MyItem> mClusterManager;
private Cluster<MyItem> clickedCluster;
private MyItem clickedClusterItem;
@SuppressWarnings("unchecked")
@Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
setContentView(R.layout.map_view);
try {
// Initializing Map from XML :
GooglePlayServicesUtil.isGooglePlayServicesAvailable(Map.this);
SupportMapFragment mapFrag = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.mMapView);
mMapView = mapFrag.getMap();
mMapView.setMapType(GoogleMap.MAP_TYPE_NORMAL);
mMapView.getUiSettings().setZoomControlsEnabled(true);
mMapView.getUiSettings().setCompassEnabled(true);
mMapView.getUiSettings().setMyLocationButtonEnabled(true);
mMapView.getUiSettings().setRotateGesturesEnabled(true);
mMapView.getUiSettings().setScrollGesturesEnabled(true);
mMapView.getUiSettings().setTiltGesturesEnabled(true);
mMapView.getUiSettings().setZoomGesturesEnabled(true);
mMapView.setMyLocationEnabled(true);
} catch (Exception e) {
mMapFrame.setVisibility(View.GONE);
Utils.displayToast("Your device doesn't support Google Map",
Map.this);
}
// Creating cluster manager object.
mClusterManager = new ClusterManager<MyItem>(Map.this, mMapView);
mMapView.setOnCameraChangeListener(mClusterManager);
mClusterManager.setRenderer(new MyClusterRenderer(Map.this, mMapView,
mClusterManager));
mMapView.setOnInfoWindowClickListener(mClusterManager);
mMapView.setInfoWindowAdapter(mClusterManager.getMarkerManager());
mClusterManager.getClusterMarkerCollection().setOnInfoWindowAdapter(
new MyCustomAdapterForClusters());
mClusterManager.getMarkerCollection().setOnInfoWindowAdapter(
new MyCustomAdapterForItems());
mMapView.setOnMarkerClickListener(mClusterManager);
mClusterManager.setOnClusterClickListener(this);
mClusterManager.setOnClusterInfoWindowClickListener(this);
mClusterManager.setOnClusterItemClickListener(this);
mClusterManager.setOnClusterItemInfoWindowClickListener(this);
mClusterManager
.setOnClusterClickListener(new OnClusterClickListener<MyItem>() {
@Override
public boolean onClusterClick(Cluster<MyItem> cluster) {
clickedCluster = cluster;
return false;
}
});
mClusterManager
.setOnClusterItemClickListener(new OnClusterItemClickListener<MyItem>() {
@Override
public boolean onClusterItemClick(MyItem item) {
clickedClusterItem = item;
return false;
}
});
Adding Objects to the Cluster.
mClusterManager.addItem(mItemData);
mMapView.animateCamera(CameraUpdateFactory
.newLatLngZoom(mLatLng, 7));
mClusterManager.cluster();
}
class MyClusterRenderer extends DefaultClusterRenderer<MyItem> {
public MyClusterRenderer(Context context, GoogleMap map,
ClusterManager<MyItem> clusterManager) {
super(context, map, clusterManager);
}
@Override
protected void onBeforeClusterItemRendered(MyItem item,
MarkerOptions markerOptions) {
super.onBeforeClusterItemRendered(item, markerOptions);
}
@Override
protected void onClusterItemRendered(MyItem clusterItem, Marker marker) {
super.onClusterItemRendered(clusterItem, marker);
}
}
// Custom adapter info view :
public class MyCustomAdapterForItems implements InfoWindowAdapter {
private final View myContentsView;
MyCustomAdapterForItems() {
myContentsView = getLayoutInflater().inflate(
R.layout.map_info_window_dialog, null);
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
@Override
public View getInfoWindow(Marker marker) {
// TODO Auto-generated method stub
TextView tvTitle = ((TextView) myContentsView
.findViewById(R.id.txtHeader));
TextView tvSnippet = ((TextView) myContentsView
.findViewById(R.id.txtAddress));
tvTitle.setTypeface(mTyFaceKreonBold);
tvSnippet.setTypeface(mTyFaceKreonBold);
if (clickedClusterItem != null) {
tvTitle.setText(clickedClusterItem.getmStoreName());
tvSnippet.setText(clickedClusterItem.getmAddressOne());
}
return myContentsView;
}
}
// class for Main Clusters.
public class MyCustomAdapterForClusters implements InfoWindowAdapter {
private final View myContentsView;
MyCustomAdapterForClusters() {
myContentsView = getLayoutInflater().inflate(
R.layout.map_info_window_dialog, null);
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
@Override
public View getInfoWindow(Marker marker) {
// TODO Auto-generated method stub
TextView tvTitle = ((TextView) myContentsView
.findViewById(R.id.txtHeader));
TextView tvSnippet = ((TextView) myContentsView
.findViewById(R.id.txtAddress));
tvSnippet.setVisibility(View.GONE);
tvTitle.setTypeface(mTyFaceKreonBold);
tvSnippet.setTypeface(mTyFaceKreonBold);
if (clickedCluster != null) {
tvTitle.setText(String
.valueOf(clickedCluster.getItems().size())
+ " more offers available");
}
return myContentsView;
}
}
@Override
public void onClusterItemInfoWindowClick(MyItem item) {
// TODO Auto-generated method stub
Intent intent = new Intent(Map.this,NextActivity.class);
intent.putExtra("mLatitude", item.getmLatitude());
intent.putExtra("mLongitude", item.getmLongitude());
startActivity(intent);
finish();
}
@Override
public boolean onClusterItemClick(MyItem item) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onClusterInfoWindowClick(Cluster<MyItem> cluster) {
// TODO Auto-generated method stub
}
@Override
public boolean onClusterClick(Cluster<MyItem> cluster) {
// TODO Auto-generated method stub
return false;
}
}
}
코드는 자명하다. Hooe를 사용하여 클러스터 라이브러리 및 Google Play 서비스 라이브러리를 빌드 경로에 추가했습니다. 문의 사항이 있으면 알려주십시오.
정보 창이 표시되지 않습니다 ... 어디에 특정 마커에 대한 정보창을 설정하세요 ... – Deva
@Deva 친절하게 표시 하시겠습니까? 항목을 클러스터에 추가 하시겠습니까? –
private void readItems() throws JSONException { \t // InputStream inputStream = getResources(). openRawResource (R.raw.radar_search); \t // 목록
- 1. 안드로이드에 phonegap의지도에 마커를 표시하는 방법은 무엇입니까?
- 2. Google지도 정보 창을 동적으로 추가하는 방법은 무엇입니까?
- 3. jvectormap이있는 마커를 추가하는 방법은 무엇입니까?
- 4. 이전 마커를 제거하지 않고 새 마커를 추가하는 방법은 무엇입니까?
- 5. GUI에서 그래프에 마커를 추가하는 방법은 무엇입니까? Matlab
- 6. Google지도에 여러 마커를 추가하는 방법은 무엇입니까?
- 7. 마커를 국가에 동적으로 추가하는 방법은 무엇입니까?
- 8. Mapbox GL에 간단한 마커를 추가하는 방법은 무엇입니까?
- 9. SQLite에 저장된지도 마커를 추가하는 방법은 무엇입니까? - 안드로이드
- 10. 지연없이지도에 수백 개의 마커를 추가하는 방법은 무엇입니까?
- 11. URL로 Google지도에 여러 마커를 추가하는 방법은 무엇입니까?
- 12. 전단지에 대량의 마커를 추가하는 방법은 무엇입니까?
- 13. 안드로이드에 많은 양의 텍스트를 추가하는 방법은 무엇입니까?
- 14. 안드로이드에 스크롤링 버튼을 추가하는 방법은 무엇입니까?
- 15. 안드로이드에 순환 뷰를 추가하는 방법은 무엇입니까?
- 16. 안드로이드에 PageTitleStrip이있는 이미지를 추가하는 방법은 무엇입니까?
- 17. 안드로이드에 공유 버튼을 추가하는 방법은 무엇입니까?
- 18. 안드로이드에 팝업 광고를 추가하는 방법은 무엇입니까?
- 19. 지오 코더가 마커를 배치 한 후 정보 창을 만드는 방법
- 20. 마커를 클릭 할 때 열려있는 모든 정보 창을 닫으려면 어떻게해야합니까?
- 21. 마커를 클릭하면 같은 페이지에있는 다른지도의 정보 창을 닫을 수 있습니까?
- 22. 하나의 창을 다른 창에 추가하는 방법은 무엇입니까?
- 23. intelliJ에서 변수 창을 추가하는 방법은 무엇입니까?
- 24. wpf에서 usercontrol에 창을 추가하는 방법은 무엇입니까?
- 25. 객관식으로 확인 팝업 창을 추가하는 방법은 무엇입니까?
- 26. pygtk에서 opencv 창을 추가하는 방법은 무엇입니까?
- 27. 빠른 검색 창을 애플리케이션에 추가하는 방법은 무엇입니까?
- 28. 지도에 장소 검색 창을 추가하는 방법은 무엇입니까?
- 29. 디렉토리 창을 제거하고 Emacs ECB에서 cscope 창을 추가하는 방법은 무엇입니까?
- 30. Google지도 V3에서 동시에 한 정보 창을 열어 두는 방법은 무엇입니까?
클러스터 라이브러리를 사용하여 맞춤 정보 창을 추가 할 생각이 없습니다. – Deva