Note that there are some explanatory texts on larger screens.

plurals
  1. POHow can I make a pop-up menu appear after a pin is added to google maps android?
    primarykey
    data
    text
    <p>Here is my main activity class: </p> <pre><code>public class MyActivity extends MapActivity implements LocationListener, OnClickListener{ private MapView mapView; private MyItemizedOverlay itemizedOverlay; Button route; Drawable drawableDot; static GeoPoint src; static GeoPoint des; Canvas canvas; Paint paint; boolean shadow; private LocationManager locManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); route = (Button) findViewById(R.id.cmd_submit); route.setOnClickListener(this); //fetch the map view from the layout mapView = (MapView) findViewById(R.id.myMapView); //make available zoom controls mapView.setBuiltInZoomControls(true); //latitude and longitude of Rome double lat = 41.889882; double lon = 12.479267; //create geo point GeoPoint point = new GeoPoint((int)(lat * 1E6), (int)(lon *1E6)); //get the MapController object MapController controller = mapView.getController(); //animate to the desired point controller.animateTo(point); //set the map zoom to 13 // zoom 1 is top world view controller.setZoom(13); //invalidate the map in order to show changes mapView.invalidate(); // Use the location manager through GPS locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); //get the current location (last known location) from the location manager Location location = locManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); //if location found display as a toast the current latitude and longitude if (location != null) { Toast.makeText( this, "Current location:\nLatitude: " + location.getLatitude() + "\n" + "Longitude: " + location.getLongitude(), Toast.LENGTH_LONG).show(); point = new GeoPoint((int)(location.getLatitude()*1E6),(int)(location.getLongitude() *1E6)); controller.animateTo(point); } else { Toast.makeText(this, "Cannot fetch current location!", Toast.LENGTH_LONG).show(); } //when the current location is found – stop listening for updates (preserves battery) locManager.removeUpdates(this); // fetch the drawable - the pin that will be displayed on the map Drawable drawable = this.getResources().getDrawable(R.drawable.marker); // create and add an OverlayItem to the MyItemizedOverlay list OverlayItem overlayItem = new OverlayItem(point, "", ""); itemizedOverlay = new MyItemizedOverlay(drawable,this); itemizedOverlay.setGestureDetector(new GestureDetector(new MyGestureDetector())); itemizedOverlay.addOverlay(overlayItem); // add the overlays to the map mapView.getOverlays().add(itemizedOverlay); mapView.invalidate(); //when the current location is found – stop listening for updates (preserves battery) locManager.removeUpdates(this); } @Override protected boolean isRouteDisplayed() { return false; } class MyGestureDetector extends SimpleOnGestureListener implements OnClickListener{ ArrayList&lt;GeoPoint&gt; points =new ArrayList&lt;GeoPoint&gt;(); @Override public boolean onSingleTapConfirmed(MotionEvent event) { // fetch the correspondent point from the map Log.d("A condition", "d5al l methodaaya"); GeoPoint p = mapView.getProjection().fromPixels((int) event.getX(),(int) event.getY()); points.add(p); // create an overlay item and clear all others OverlayItem o = new OverlayItem(p, null, null); // itemizedOverlay.clear(); itemizedOverlay.addOverlay(o); // add the overlay item //mapView.getOverlays().clear(); mapView.getOverlays().add(itemizedOverlay); mapView.invalidate(); Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault()); // get the address based on the coordinates try { List&lt;Address&gt; addresses = geoCoder.getFromLocation(p.getLatitudeE6() / 1E6, p.getLongitudeE6() / 1E6, 1); String addressString = ""; if (addresses.size() &gt; 0) { for (int i = 0; i &lt; addresses.get(0) .getMaxAddressLineIndex(); i++) addressString += addresses.get(0).getAddressLine(i) + " - "; } Toast.makeText(getBaseContext(), addressString, Toast.LENGTH_SHORT).show(); //Add action item ActionItem addAction = new ActionItem(); addAction.setTitle("Add"); addAction.setIcon(getResources().getDrawable(R.drawable.marker)); //Accept action item ActionItem accAction = new ActionItem(); accAction.setTitle("Accept"); accAction.setIcon(getResources().getDrawable(R.drawable.marker)); //Upload action item ActionItem upAction = new ActionItem(); upAction.setTitle("Upload"); upAction.setIcon(getResources().getDrawable(R.drawable.marker )); final QuickAction mQuickAction = new QuickAction(getBaseContext()); mQuickAction.addActionItem(addAction); mQuickAction.addActionItem(accAction); mQuickAction.addActionItem(upAction); </code></pre> <p>Now here's the problem, if I try the below <code>OnClickListener</code> with route (which is a button) it works fine, but if I try it for the whole map it does absolutely nothing. (if there's another totally different way which implements a <code>setOnClickListener</code> for the pins that'd be great!)</p> <pre><code>// mapView.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // mQuickAction.show(v); // } // }); route.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mQuickAction.show(v); } }); //setup the action item click listener mQuickAction.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() { public void onItemClick(int pos) { if (pos == 0) { //Add item selected Toast.makeText(MyActivity.this, "Add item selected", Toast.LENGTH_SHORT).show(); } else if (pos == 1) { //Accept item selected Toast.makeText(MyActivity.this, "Accept item selected", Toast.LENGTH_SHORT).show(); } else if (pos == 2) { //Upload item selected Toast.makeText(MyActivity.this, "Upload items selected", Toast.LENGTH_SHORT).show(); } } @Override public void onItemClick(QuickAction source, int pos, int actionId) { if (pos == 0) { //Add item selected Toast.makeText(MyActivity.this, "Add item selected", Toast.LENGTH_SHORT).show(); } else if (pos == 1) { //Accept item selected Toast.makeText(MyActivity.this, "Accept item selected", Toast.LENGTH_SHORT).show(); } else if (pos == 2) { //Upload item selected Toast.makeText(MyActivity.this, "Upload items selected", Toast.LENGTH_SHORT).show(); } } }); } catch (IOException e) { e.printStackTrace(); } return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return super.onFling(e1, e2, velocityX, velocityY); } @Override public boolean onDown(MotionEvent e) { return false; } @Override public void onClick(View arg0) { // TODO Auto-generated method stub } } } </code></pre> <p>Also, I tried what's suggested here but it didn't work. <a href="https://stackoverflow.com/questions/6870526/android-set-listener-for-marker-on-google-map">Android set Listener for marker on google map</a> Any help would be greatly appreciated, thanks in advance!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload