클릭 이벤트 처리

플랫폼 선택: Android iOS JavaScript

데이터 지형지물이 click 이벤트에 응답하고 다음에 사용할 수 있습니다. 사용자 상호작용에 따라 지형지물의 모양을 변경할 수 있습니다.

스타일이 지정된 다각형 데이터를 보여주는 스크린샷

클릭 이벤트 핸들러 작성

지형지물 레이어에서 클릭 이벤트가 발생하면 Android용 Maps SDK는 FeatureClickEvent 드림 객체를 이벤트 핸들러에 추가합니다.

FeatureClickEvent.getFeatures() 메서드를 사용하여 특성 목록 가져오기 알 수 있습니다.

지형지물 레이어 이벤트 처리

데이터 세트 레이어에서 이벤트를 처리하려면 다음 단계를 따르세요. 이 예를 들어, 인코더-디코더를 나타내는 폴리곤에 선택합니다.

통화 시 FeatureLayer.setFeatureStyle(), 스타일 팩토리 함수는 데이터 세트로 그룹화됩니다. 이벤트 핸들러에서 데이터 세트의 스타일을 업데이트하려면 다음을 수행해야 합니다. FeatureLayer.setFeatureStyle()를 호출하여 모든 데이터 세트에 업데이트된 스타일 설정 기능을 살펴보겠습니다

  1. 아직 시작하지 않았다면 다음 단계를 따르세요. 시작하기 새 지도 ID와 지도 스타일을 만듭니다. 데이터 세트를 사용 설정해야 합니다. 지형지물 레이어입니다.

  2. 클래스가 구현되었는지 확인 FeatureLayer.OnFeatureClickListener

  3. 다음을 호출하여 기능 클릭 이벤트에 이벤트 핸들러를 등록합니다. 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(); } }

  4. 선택된 지형지물에는 파란색, 나머지 지형지물에는 녹색의 채우기 색상을 적용합니다. 기능을 살펴보겠습니다 표시된 지형지물만 클릭할 수 있습니다.

    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); }