【问题标题】:How to set validation of marker's color in android (Google Map API)如何在android中设置标记颜色的验证(谷歌地图API)
【发布时间】:2015-08-26 03:49:18
【问题描述】:

所以,我想根据标记的颜色设置验证基础。

首先,这是我的标记循环代码,所以它会显示标记(这不是主要问题,这段代码有效)

for(int i = 0; i < datMarkerList.size(); i++)
    {
        if(i < 50) {
            DAT_MARKER datMarker = datMarkerList.get(i);
            marker = mMap.addMarker(new MarkerOptions()
                    .position(new LatLng(datMarker.getLATITUDE(), datMarker.getLONGITUDE()))
                    .title(datMarker.getDESCRIPTION())
                    .snippet(datMarker.getID_MARKER() + ""));
            markers.add(marker);
        } else {
            continue;
        }

        DAT_MARKER_OP datMarkerOp = datMarkerOpList.get(i);
        if(datMarkerOp.getKODE_PAJAK() == 0) { //KODE PAJAK HOTEL
            marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
        }else if(datMarkerOp.getKODE_PAJAK() == 1) { //KODE PAJAK RESTAURANT
            marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW));
        }else { //KODE PAJAK HOTEL DAN RESTAURANT
            marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
        }
    }

然后,从那些图标,我想根据这些颜色进行验证,所以我想我会在这里设置它(我也放了算法):

@Override
public boolean onMarkerClick(final Marker marker) {
    linCard.setVisibility(View.VISIBLE);
    //mapSettings.setMyLocationButtonEnabled(false);
    linCard.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //IF marker's color is RED
                //Statement
            //IF marker's color is YELLOW
                //Statement
            //IF marker's color is BLUE
                //Statement

        }
    });

就是这样。我一直在想,我对代码一无所知,有什么想法吗?

【问题讨论】:

    标签: java android google-maps google-maps-api-3


    【解决方案1】:

    我认为您可以使用标记的标题来识别它,或者您可以使用 Hashmap 将 maker 及其相应信息保存在其中,就像这里所做的那样 http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

    【讨论】:

    • @pengrad 但如何从markersMap 中获取marker 的值?
    【解决方案2】:

    您无需将应用逻辑与颜色混合在一起。
    您想根据标记类型而不是颜色执行一些操作。可以更改颜色。
    因此,您需要将附加信息链接到标记,例如通过地图。

    Map<Marker,DAT_MARKER_OP> markersMap = new HashMap<>();
    

    在你的标记循环中:

    markersMap.put(marker, datMarkerOp);
    

    在此之后,您可以在 onClick 中获取 DAT_MARKER_OP

    public boolean onMarkerClick(final Marker marker) {
        linCard.setVisibility(View.VISIBLE);
        linCard.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
    
                DAT_MARKER_OP datMarkerOp = markersMap.get(marker);
                if(datMarkerOp.getKODE_PAJAK() == 0) {
                    // your logic
                }
    
            }
        });
    }
    

    【讨论】:

    • 所以,也许图标没有验证,而标题、sn-p 等有验证。但这是最好的解决方案,谢谢,伙计。
    【解决方案3】:

    您在这里有 2 个标识符。标题和 sn-p 可以使用它们中的任何一个来区分标记。例如,为所有红色标记提供 id_red,为所有黄色标记提供 id_yellow

    if(marker.getTitle().toString().equals(id_red )){
            its a red colored marker
     }else{
    
     } 
    

    或者

    你可以用 sn-p 做同样的事情

     if (marker.getSnippet().contains("id_red")) {
         red
        } else{
        // Click of another colored marker
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 2021-02-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多