데이터 지형지물이 click
이벤트에 응답하고 다음에 사용할 수 있습니다.
사용자 상호작용에 따라 지형지물의 모양을 변경할 수 있습니다.
클릭 이벤트 핸들러 작성
지형지물 레이어에서 클릭 이벤트가 발생하면 Android용 Maps SDK는
FeatureClickEvent
드림
객체를 이벤트 핸들러에 추가합니다.
FeatureClickEvent.getFeatures()
메서드를 사용하여 특성 목록 가져오기
알 수 있습니다.
지형지물 레이어 이벤트 처리
데이터 세트 레이어에서 이벤트를 처리하려면 다음 단계를 따르세요. 이 예를 들어, 인코더-디코더를 나타내는 폴리곤에 선택합니다.
통화 시
FeatureLayer.setFeatureStyle()
,
스타일 팩토리 함수는
데이터 세트로 그룹화됩니다. 이벤트 핸들러에서 데이터 세트의 스타일을 업데이트하려면 다음을 수행해야 합니다.
FeatureLayer.setFeatureStyle()
를 호출하여 모든 데이터 세트에 업데이트된 스타일 설정
기능을 살펴보겠습니다
아직 시작하지 않았다면 다음 단계를 따르세요. 시작하기 새 지도 ID와 지도 스타일을 만듭니다. 데이터 세트를 사용 설정해야 합니다. 지형지물 레이어입니다.
클래스가 구현되었는지 확인
FeatureLayer.OnFeatureClickListener
다음을 호출하여 기능 클릭 이벤트에 이벤트 핸들러를 등록합니다.
FeatureLayer.addOnFeatureClickListener()
Kotlin
private var datasetLayer: FeatureLayer? = null // The globalid of the clicked dataset feature. var lastGlobalId: String? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the DATASET feature layer. datasetLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build())
// Register the click event handler for the Datasets layer. datasetLayer?.addOnFeatureClickListener(this)
// Apply default style to all features on load to enable clicking. styleDatasetsLayer() }
// Define the click event handler to set lastGlobalId to globalid of selected feature. override fun onFeatureClick(event: FeatureClickEvent) { // Get the dataset feature affected by the click. val clickFeatures: MutableList<Feature> = event.features lastGlobalId = null if (clickFeatures.get(0) is DatasetFeature) { lastGlobalId = ((clickFeatures.get(0) as DatasetFeature).getDatasetAttributes().get("globalid")) // Remember to reset the Style Factory. styleDatasetsLayer() } }자바
private FeatureLayer datasetLayer; // The globalid of the clicked dataset feature. String lastgobalid = null;
@Override public void onMapReady(GoogleMap map) {
// Get the DATASET feature layer. datasetLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build());
// Register the click event handler for the Datasets layer. datasetLayer.addOnFeatureClickListener(this);
// Apply default style to all features on load to enable clicking. styleDatasetsLayer(); }
@Override // Define the click event handler. public void onFeatureClick(FeatureClickEvent event) { // Get the dataset feature affected by the click. List<Feature> clickFeatures = event.getFeatures(); lastgobalid = null; if (clickFeatures.get(0) instanceof DatasetFeature) { lastgobalid = ((DatasetFeature) clickFeatures.get(0)).getDatasetAttributes().get("globalid"); // Remember to reset the Style Factory. styleDatasetsLayer(); } }선택된 지형지물에는 파란색, 나머지 지형지물에는 녹색의 채우기 색상을 적용합니다. 기능을 살펴보겠습니다 표시된 지형지물만 클릭할 수 있습니다.
Kotlin
// Set fill and border for all features. private fun styleDatasetsLayer() { // Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) { val globalIDs: MutableMap<String, String> = feature.getDatasetAttributes() // Determine globalid attribute. val globalID = globalIDs!!["globalid"] // Set default colors to to green. var fillColor = 0x800000ff var strokeColor = 0xff0000ff if (globalID == lastGlobalId) { // Color selected area blue. fillColor = 0x8000ff00 strokeColor = 0xff00ff00 } return@StyleFactory FeatureStyle.Builder() .fillColor(fillColor) .strokeColor(strokeColor) .build() } return@StyleFactory null }
// Apply the style factory function to the dataset feature layer. datasetLayer?.setFeatureStyle(styleFactory) }Java
// Set default green fill and border for all features. private void styleDatasetsLayer() { // Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
// Check if "globalid" attribute of feature is the "globalid" of clicked feature. Map<String, String> globalIDs = ((DatasetFeature) feature).getDatasetAttributes(); String globalID = globalIDs.get("globalid"); // Set default colors to green. int fillColor = 0x4000ff00; int strokeColor = 0xff00ff00; if (Objects.equals(globalID, lastgobalid)) { // Color selected area blue. fillColor = 0x400000ff; strokeColor = 0xff0000ff; } return new FeatureStyle.Builder() .fillColor(fillColor) .strokeColor(strokeColor) .strokeWidth(2) .build(); } return null; };
// Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }