2013-05-05 23 views
10

मार्कर को मैं इस तरह के कोड है जोड़ें:एंड्रॉयड गूगल मैप्स खुद टैग

protected void onPostExecute(final ArrayList<HashMap<String, String>> adapter) { 

       for (final HashMap<String, String> a : adapter) { 
        LatLng pos = new LatLng(Double.valueOf(a.get(TAG_latitude)), Double.valueOf(a.get(TAG_longitude))); 
        Log.e("pppppos", String.valueOf(pos.latitude)); 
        Marker m = map.addMarker(new MarkerOptions().position(pos) 
          .title(a.get(TAG_NAME)) 
          .snippet("Kiel is cool")); 

        map.setOnInfoWindowClickListener(
           new OnInfoWindowClickListener(){ 
            public void onInfoWindowClick(Marker marker){ 
             Intent nextScreen = new Intent(SearchExchangerActivity.this, BankExchangersListActivity.class); 
             nextScreen.putExtra("exchanger_id", id);  
             startActivityForResult(nextScreen, 0); 
            } 
            }); 
       } 

लेकिन मैं जब अन्य करने के लिए अतिरिक्त जानकारी भेजने के उपयोगकर्ता क्षेत्र के लिए अदृश्य इस आईडी तो प्रत्येक मार्कर के लिए उदाहरण Tag_id के लिए निर्धारित करते हैं, और उपयोग करने की आवश्यकता गतिविधि, कुछ:

protected void onPostExecute(final ArrayList<HashMap<String, String>> adapter) { 

      for (final HashMap<String, String> a : adapter) { 
       LatLng pos = new LatLng(Double.valueOf(a.get(TAG_latitude)), Double.valueOf(a.get(TAG_longitude))); 
       Marker m = map.addMarker(new MarkerOptions().position(pos) 
         .title(a.get(TAG_NAME)) 
         .snippet("Kiel is cool") 
                .Tag_id(TAG_ID)); 

       map.setOnInfoWindowClickListener(
          new OnInfoWindowClickListener(){ 
           public void onInfoWindowClick(Marker marker){ 
            Intent nextScreen = new Intent(SearchExchangerActivity.this, BankExchangersListActivity.class); 
            nextScreen.putExtra("exchanger_id", marker.get(TAG_ID));  
            startActivityForResult(nextScreen, 0); 
           } 
           }); 
      } 

क्या यह करना सच है? बस मैं अपने श्रोता में कैसे प्राप्त कर सकता हूं मैं किस मार्कर पर क्लिक कर रहा हूं?

इसके अलावा यह शीर्षक क्षेत्र के माध्यम से किया जा सकता है ... लेकिन मैं जब marker.getTitle() लेखन त्रुटि की हो रही है ...

upd

for (final HashMap<String, String> a : adapter) { 
       LatLng pos = new LatLng(Double.valueOf(a.get(TAG_latitude)), Double.valueOf(a.get(TAG_longitude))); 
       Log.e("pppppos", String.valueOf(pos.latitude)); 
       HashMap<Marker, String> m = new HashMap<Marker, String>(); 
         m.put(map.addMarker(new MarkerOptions().position(pos) 
         .title(a.get(TAG_NAME)) 
         .snippet("Kiel is cool")), "1");      

      } 

      map.setOnInfoWindowClickListener(
       new OnInfoWindowClickListener(){ 
        public void onInfoWindowClick(HashMap<Marker, String> marker){ 
         Intent nextScreen = new Intent(SearchExchangerActivity.this, BankExchangersListActivity.class); 
         nextScreen.putExtra("exchanger_id", "1"); 
         startActivityForResult(nextScreen, 0); 
        } 
        }); 

उत्तर

11
  1. आप Map<Marker, String> का उपयोग करें और रख सकते हैं अपने डेटा या
  2. Android Maps Extensions का उपयोग करें जो getData और setDataMarker कक्षा में कार्य करता है।

बीटीडब्ल्यू। आपको लूप में InfoWindowAdapter सेट नहीं करना चाहिए। इसका कोई मतलब नही बनता। केवल अंतिम जीवित रहता है।

+1

आप के उपयोग नक्शा <मार्कर, स्ट्रिंग> उदाहरण दे सकता है:

निम्नलिखित आधिकारिक दस्तावेज़ से "associate data with a marker" अनुभाग से लिया गया है? –

+0

जब मैं लिखने की कोशिश नक्शा <मार्कर, स्ट्रिंग> मीटर = m.put (map.addMarker (नई MarkerOptions()। स्थिति (स्थिति) \t \t \t \t .title (a.get (TAG_NAME)) \t \t \t \t \t \t \t। स्निपेट ("किल शांत है")), "1"); \t कुछ खराब है –

+1

@ वाल्डिसएज़मारिस 'मानचित्र' का उपयोग करके कामकाज के लिए यहां देखें: http://code.google.com/p/gmaps-api-issues/issues/detail?id=4650 –

2

वर्तमान में यह औपचारिक रूप से उपलब्ध है, setTag और getTag मार्कर एपीआई में जोड़ा गया है।

/** 
* A demo class that stores and retrieves data objects with each marker. 
*/ 
public class MarkerDemoActivity extends FragmentActivity implements 
     OnMarkerClickListener, 
     OnMapReadyCallback { 

    private static final LatLng PERTH = new LatLng(-31.952854, 115.857342); 
    private static final LatLng SYDNEY = new LatLng(-33.87365, 151.20689); 
    private static final LatLng BRISBANE = new LatLng(-27.47093, 153.0235); 

    private Marker mPerth; 
    private Marker mSydney; 
    private Marker mBrisbane; 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.marker_demo); 

     SupportMapFragment mapFragment = 
       (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 

    /** Called when the map is ready. */ 
    @Override 
    public void onMapReady(GoogleMap map) { 
     mMap = map; 

     // Add some markers to the map, and add a data object to each marker. 
     mPerth = mMap.addMarker(new MarkerOptions() 
       .position(PERTH) 
       .title("Perth"); 
     mPerth.setTag(0); 

     mSydney = mMap.addMarker(new MarkerOptions() 
       .position(SYDNEY) 
       .title("Sydney"); 
     mSydney.setTag(0); 

     mBrisbane = mMap.addMarker(new MarkerOptions() 
       .position(BRISBANE) 
       .title("Brisbane"); 
     mBrisbane.setTag(0); 

     // Set a listener for marker click. 
     mMap.setOnMarkerClickListener(this); 
    } 

    /** Called when the user clicks a marker. */ 
    @Override 
    public boolean onMarkerClick(final Marker marker) { 

     // Retrieve the data from the marker. 
     Integer clickCount = (Integer) marker.getTag(); 

     // Check if a click count was set, then display the click count. 
     if (clickCount != null) { 
      clickCount = clickCount + 1; 
      marker.setTag(clickCount); 
      Toast.makeText(this, 
          marker.getTitle() + 
          " has been clicked " + clickCount + " times.", 
          Toast.LENGTH_SHORT).show(); 
     } 

     // Return false to indicate that we have not consumed the event and that we wish 
     // for the default behavior to occur (which is for the camera to move such that the 
     // marker is centered and for the marker's info window to open, if it has one). 
     return false; 
    } 
} 
+0

ध्यान दें कि टैग गेटर और सेटर केवल Google Play Services 9.4.0 से शुरू हो रहे हैं – Skoua

संबंधित मुद्दे