android - Google Map API v2 में MapFragment पर एकाधिक मार्कर कैसे दिखाएं?




3 Answers

मैं इसे विभिन्न रंगों के मार्करों के साथ मानचित्र पर कार की स्थिति दिखाने के लिए ऐसा करता हूं:

    private void addMarkersToMap() {
    mMap.clear();
    for (int i = 0; i < Cars.size(); i++) {         
            LatLng ll = new LatLng(Cars.get(i).getPos().getLat(), Cars.get(i).getPos().getLon());
            BitmapDescriptor bitmapMarker;
            switch (Cars.get(i).getState()) {
            case 0:
                bitmapMarker = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED);
                Log.i(TAG, "RED");
                break;
            case 1:
                bitmapMarker = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN);
                Log.i(TAG, "GREEN");
                break;
            case 2:
                bitmapMarker = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE);
                Log.i(TAG, "ORANGE");
                break;
            default:
                bitmapMarker = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED);
                Log.i(TAG, "DEFAULT");
                break;
            }               
            mMarkers.add(mMap.addMarker(new MarkerOptions().position(ll).title(Cars.get(i).getName())
                    .snippet(getStateString(Cars.get(i).getState())).icon(bitmapMarker)));

            Log.i(TAG,"Car number "+i+"  was added " +mMarkers.get(mMarkers.size()-1).getId());
        }
    }

}

कार कस्टम ऑब्जेक्ट्स का एक ऐरेलिस्ट है और एममार्कर्स मार्करों का एक ऐरेलिस्ट है।

नोट: आप इस तरह के टुकड़े में नक्शा दिखा सकते हैं:

private GoogleMap mMap;
....

private void setUpMapIfNeeded() {
    // Do a null check to confirm that we have not already instantiated the
    // map.
    if (mMap == null) {
        // Try to obtain the map from the SupportMapFragment.
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
        // Check if we were successful in obtaining the map.
        if (mMap != null) {
            setUpMap();
        }
    }
}




private void setUpMap() {
    // Hide the zoom controls as the button panel will cover it.
    mMap.getUiSettings().setZoomControlsEnabled(false);

    // Add lots of markers to the map.
    addMarkersToMap();

    // Setting an info window adapter allows us to change the both the
    // contents and look of the
    // info window.
    mMap.setInfoWindowAdapter(new CustomInfoWindowAdapter());

    // Set listeners for marker events. See the bottom of this class for
    // their behavior.
    mMap.setOnMarkerClickListener(this);
    mMap.setOnInfoWindowClickListener(this);
    mMap.setOnMarkerDragListener(this);

    // Pan to see all markers in view.
    // Cannot zoom to bounds until the map has a size.
    final View mapView = getSupportFragmentManager().findFragmentById(R.id.map).getView();
    if (mapView.getViewTreeObserver().isAlive()) {
        mapView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            @SuppressLint("NewApi")
            // We check which build version we are using.
            @Override
            public void onGlobalLayout() {
                LatLngBounds.Builder bld = new LatLngBounds.Builder();
    for (int i = 0; i < mAvailableCars.size(); i++) {           
            LatLng ll = new LatLng(Cars.get(i).getPos().getLat(), Cars.get(i).getPos().getLon());
            bld.include(ll);            
    }
    LatLngBounds bounds = bld.build();          
    mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 70));
                mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this);

            }
        });
    }
} 

और बस setUpMapIfNeeded() को setUpMapIfNeeded() कॉल करें

मै मैप्स दिखाने के लिए अपने एप्लिकेशन में Google Map API v2 का उपयोग कर रहा हूं।

मैंने अपने सभी चरणों का पालन किया है, जिसका पालन मेरे आवेदन में Google मानचित्र को सक्षम करने के लिए किया जाना है।

public class PinLocationOnMapView extends FragmentActivity {

    private double mLatitude = 0.0, mLongitude = 0.0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SupportMapFragment fragment = SupportMapFragment.newInstance();
        getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, fragment).commit();
    }
}

अगर मैं इस कोड का उपयोग करता हूं, तो यह मुझे नक्शा दिखाता है, लेकिन यदि मैं अपना अक्षांश / देशांतर मान प्रदान करता हूं, तो नक्शा टाइल्स लोड नहीं होता है, और मैं केवल सफेद टाइल्स देखता हूं।

उपरोक्त वर्ग के क्रिएट () में लिखा गया कोड निम्नलिखित है:

 if (getIntent().getExtras() != null) {
            final Bundle bundle = getIntent().getBundleExtra("LOCATION");
            mLatitude = bundle.getDouble("LATITUDE");
            mLongitude = bundle.getDouble("LONGITUDE");
        } else {
            finish();
        }

        GoogleMapOptions options = new GoogleMapOptions();
        LatLng latLng = new LatLng(mLatitude, mLongitude);
        CameraPosition cameraPosition;// = new CameraPosition(latLng, 0, 0, 0);
        cameraPosition = CameraPosition.fromLatLngZoom(latLng, (float) 14.0);

        options.mapType(GoogleMap.MAP_TYPE_SATELLITE).camera(cameraPosition)
                .zoomControlsEnabled(true).zoomGesturesEnabled(true);

        SupportMapFragment fragment = SupportMapFragment.newInstance(options);
        getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, fragment).commit(); 

इसके अलावा, मेरे पास लेट / लम्बे मानों की एक सूची है। मैं उन्हें MapFragment पर दिखाना चाहता MapFragment , MapFragment पर एकाधिक मार्कर कैसे दिखाना है ?

मैंने MapView और ItemizedOverlay साथ प्रयास किया, लेकिन यह मेरे लिए काम नहीं किया। मेरा मानना ​​है कि मैंने API कुंजी प्राप्त करने के लिए सही ढंग से SHA1 कुंजी बनाई है, क्योंकि अगर यह गलत था, तो MapFragment का उपयोग करके मैप नहीं देख सका, लेकिन मैं देख सकता हूं कि अगर मैं लेट / लॉग वैल्यू पास नहीं करता हूं।




मुझे नहीं पता कि आपने कोड तय कर लिया है और अब यह ठीक है, लेकिन onCreate()

if (getIntent().getExtras() != null) {
   final Bundle bundle = getIntent().getBundleExtra("LOCATION");
   mLatitude = bundle.getDouble("LATITUDE");
   mLatitude = bundle.getDouble("LONGITUDE");
}

दूसरा mLatitude मुझे लगता है कि इसे mLongitude होना mLongitude जैसे कि आप इसे अगली पंक्तियों में कॉल करते हैं।

क्षमा करें अगर मुझे जवाब के साथ देर हो चुकी है और बेकार है।




पहला क्रेते विधि सेटअपडिस्टेशन लोकेशन

 public void setupDestationLocation(double longlat, double latitue, String title) {
          LatLng Shop = new LatLng(longlat, latitue);
   /* if (DestinationMarker != null) {
      DestinationMarker.remove();
    }*/
    DestinationMarker = mMap.addMarker(new MarkerOptions()
      .position(Shop)
      .title(market_n)
      .title(title)
      .icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_marker_shop)));
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(Shop, 14);
    mMap.animateCamera(cameraUpdate);

  }

अब विधि के अंदर विधि में कॉल करें ( onMapReady )

String title = "market";
    for(int i = 0 ; i < 8 ; i++ ) {
      double offset = i / 08d;

      setupDestationLocation(longlat+offset,latitue,title+i);
    }



Related

android google-maps google-maps-markers google-maps-api-2 supportmapfragment