11

काम नहीं कर रहा मार्कर जोड़ें, मैं लंबे क्लिक के साथ मानचित्र पर मार्कर जोड़ना चाहता हूं। लेकिन यह काम नहीं कर रहा है। सामान्य क्लिक काम कर रहा है। ToastonMapClick() में सामान्य टैप के साथ प्रदर्शित होता है। लेकिन लंबे क्लिक काम नहीं कर रहा है। ToastonMapLongClick() में लंबे क्लिक के साथ प्रदर्शित नहीं होता है। मानचित्र पर मार्कर भी प्रदर्शित नहीं होता है।Google मानचित्र एंड्रॉइड एपीआई v2 मानचित्र पर लंबे समय तक क्लिक करें और

मैं SupportMapFragment का उपयोग कर रहा हूं क्योंकि मैं एंड्रॉइड 2.x उपकरणों पर अपने एप्लिकेशन का उपयोग करना चाहता हूं। मैंने अपने ऐप को नेक्सस पर परीक्षण किया है जिसमें एंड्रॉइड संस्करण 2.3.7 है।

यह मेरा कोड है।

public class MainActivity extends FragmentActivity implements 
     OnMapClickListener, OnMapLongClickListener { 

    final int RQS_GooglePlayServices = 1; 
    private GoogleMap myMap; 

    Location myLocation; 

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

     FragmentManager myFragmentManager = getSupportFragmentManager(); 
     SupportMapFragment mySupportMapFragment = (SupportMapFragment) myFragmentManager 
       .findFragmentById(R.id.map); 
     myMap = mySupportMapFragment.getMap(); 

     myMap.setMyLocationEnabled(true); 

     myMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     // myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
     // myMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE); 
     // myMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN); 

     myMap.setOnMapClickListener(this); 
     myMap.setOnMapLongClickListener(this); 

    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     int resultCode = GooglePlayServicesUtil 
       .isGooglePlayServicesAvailable(getApplicationContext()); 

     if (resultCode == ConnectionResult.SUCCESS) { 
      Toast.makeText(getApplicationContext(), 
        "isGooglePlayServicesAvailable SUCCESS", Toast.LENGTH_LONG) 
        .show(); 
     } else { 
      GooglePlayServicesUtil.getErrorDialog(resultCode, this, 
        RQS_GooglePlayServices); 
     } 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public void onMapClick(LatLng point) { 

     myMap.animateCamera(CameraUpdateFactory.newLatLng(point)); 

     Toast.makeText(getApplicationContext(), point.toString(), 
       Toast.LENGTH_LONG).show(); 


    } 

    @Override 
    public void onMapLongClick(LatLng point) { 

     myMap.addMarker(new MarkerOptions().position(point).title(
       point.toString())); 

     Toast.makeText(getApplicationContext(), 
       "New marker [email protected]" + point.toString(), Toast.LENGTH_LONG) 
       .show(); 

    } 

} 

मैं इसे कैसे हल कर सकता हूं?

उत्तर

36

मैंने इसका इस्तेमाल किया। इसने काम कर दिया।

GoogleMap gm; 

gm.setOnMapLongClickListener(this); 

@Override  
public void onMapLongClick(LatLng point) { 
    gm.addMarker(new MarkerOptions() 
     .position(point) 
     .title("You are here")   
     .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))); 
} 
1

आपके पास कोई आइकन सेट नहीं है। प्रयास करें:

@Override 
    public void onMapLongClick(LatLng point) { 

     myMap.addMarker(new MarkerOptions() 
      .position(point) 
      .title(point.toString()) 
      .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))); 

     Toast.makeText(getApplicationContext(), 
      "New marker [email protected]" + point.toString(), Toast.LENGTH_LONG) 
      .show(); 

} 
1
googleMap = supportMapFragment.getMap(); 

    // Setting a click event handler for the map 
    googleMap.setOnMapClickListener(new OnMapClickListener() { 

     @Override 
     public void onMapClick(LatLng latLng) { 

      // Creating a marker 
      MarkerOptions markerOptions = new MarkerOptions(); 

      // Setting the position for the marker 
      markerOptions.position(latLng); 

      // Setting the title for the marker. 
      // This will be displayed on taping the marker 
      markerOptions.title(latLng.latitude + " : " + latLng.longitude); 

      // Clears the previously touched position 
      googleMap.clear(); 

      // Animating to the touched position 
      googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 

      // Placing a marker on the touched position 
      googleMap.addMarker(markerOptions); 
     } 
    }); 

या

mMap.setOnMapLongClickListener(new 
      GoogleMap.OnMapLongClickListener() { 
     @Override 
     public void onMapLongClick (LatLng latLng){ 
      Geocoder geocoder = 
       new Geocoder(MapMarkerActivity.this); 
      List<Address> list; 
      try { 
       list = geocoder.getFromLocation(latLng.latitude, 
       latLng.longitude, 1); 
      } catch (IOException e) { 
       return; 
      } 
      Address address = list.get(0); 
      if (marker != null) { 
       marker.remove(); 
      } 

      MarkerOptions options = new MarkerOptions() 
       .title(address.getLocality()) 
       .position(new LatLng(latLng.latitude, 
       latLng.longitude)); 

      marker = mMap.addMarker(options); 
     } 
    }); 
संबंधित मुद्दे