簡體   English   中英

將JSON數據解析為Map標記,所有標記顯示相同的信息,我該如何解決這個問題?

[英]Parsing JSON data to Map markers, all markers showing the same info, how can I fix this?

需要一點幫助。

我有一些商店的JSON和商店信息,比如他們的名字,ID和位置。 我將其解析為ArrayList。

通過AsyncTask我將它們繪制在地圖上。 目前,這是4家商店。 我覆蓋了標記onClick以我想要的方式顯示數據。 我遇到的問題是,盡管基於經度和緯度標記位於正確的位置,但其他信息則不然。

當我點擊標記時,所有這些都列出了相同的商店名稱。 它只顯示我的JSON中的最后一個商店。 所有數據都來自我JSON中的最后一個商店。 這是我的onPostExecute()代碼:

@Override
protected void onPostExecute(ArrayList<ShopArray> shopArray) {
    super.onPostExecute(shopArray);

    for (ShopArray shopArrayOb : shopArray) {
        double lat = shopArrayOb.geo_lat;
        double lng = shopArrayOb.geo_lng;

        final String barName = shopArrayOb.bar_name;

        LatLng shopLocations = new LatLng(lat, lng);

        MarkerOptions marker = new MarkerOptions()
            .position(shopLocations)
            gMap.addMarker(marker);

        gMap.setOnMarkerClickListener(new OnMarkerClickListener() {
                @Override
            public boolean onMarkerClick(Marker marker) {

                testText.setText(barName);

                return false;
            }

        });
    }

我真的不知道如何解決這個問題。 我只是想讓它顯示標記的正確名稱,以及其他數據。 它不斷顯示我JSON中最后一個商店的數據。 如果您需要查看更多我的代碼,請告訴我,我會更新我的帖子。

我非常感謝你的幫助,提前謝謝!

編輯:我剛剛使用默認標記onClick進行了測試。 (.title和.snippet)並且它有效! 它顯示正確的信息! 有沒有辦法獲得自定義onClick呢? 看起來像setOnMarkerListener導致了這個問題。

這是因為你多次在SAME gMap對象上調用setOnMarkerClickListener() 通過這種方式,最后一次通話生效並不奇怪,最后一個商店的信息將被使用。 您應該只設置一次OnMarkerClickListener 當然,您必須在其onMarkerClick()方法中識別您的標記,以確定點擊了哪個商店。

您可以將所有標記放在HashMap中:

//somewhere befor async task    
HashMap<LatLng, String> map = new HashMap<LatLng, String>();

然后添加標記:

//in your post execute
map.put(shopLocations, barName);

然后在你的聽眾中:

gMap.setOnMarkerClickListener(new OnMarkerClickListener() {
            @Override
        public boolean onMarkerClick(Marker marker) {

            testText.setText(map.get(marker.getPosition()));

            return false;
        }

    });

暫無
暫無

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

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