簡體   English   中英

如何在Android(Google Map API)中設置標記顏色的驗證

[英]How to set validation of marker's color in android (Google Map API)

因此,我想基於標記的顏色設置驗證。

首先,這是我的標記循環代碼,因此它將顯示標記(這不是主要問題,此代碼有效)

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

        }
    });

而已。 我一直在思考,我對代碼一無所知,有什么想法嗎?

我認為您可以使用標記的標題進行標識,也可以使用Hashmap在其中保存制造商及其相應的信息,例如http://bon-app-etit.blogspot.be/2012/12/add- informationobject-to-marker-in.html

您無需將應用程序邏輯與顏色混合在一起。
您要基於標記類型而不是顏色來執行一些操作。 顏色可以改變。
因此,您需要將其他信息鏈接到標記,例如通過地圖。

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
            }

        }
    });
}

您在此處有2個標識符。.標題和摘錄可以使用它們中的一個來區分標記。例如,為所有紅色標記提供id_red,為所有黃色標記賦予id_yellow

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

 } 

要么

您可以將代碼段用於同一件事

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM