Supponiamo di avere il controllo mapview nella mia app per Android. Se so che esiste un punto di riferimento a una certa latitudine e longitudine, come posso determinare se quel punto di riferimento è attualmente visualizzabile sullo schermo dell'utente? Esiste un metodo per ottenere le coordinate per gli angoli in alto a sinistra e in basso a destra dell'area visibile?Come posso determinare se un geopoint è visualizzato nell'area attualmente visibile?
risposta
È possibile proiettare GeoPoint a punto e verificare se si tratta di scatola (0, larghezza dello schermo) di (0, altezza dello schermo)
See: https://developer.android.com/reference/com/google/android/gms/maps/Projection.html
http://developer.android.com/reference/com/google/android/gms/maps/Projection.html per la nuova API di Maps – skyman
Qualcosa di simile farà il trucco.
private boolean isCurrentLocationVisible()
{
Rect currentMapBoundsRect = new Rect();
Point currentDevicePosition = new Point();
GeoPoint deviceLocation = new GeoPoint((int) (bestCurrentLocation.getLatitude() * 1000000.0), (int) (bestCurrentLocation.getLongitude() * 1000000.0));
mapView.getProjection().toPixels(deviceLocation, currentDevicePosition);
mapView.getDrawingRect(currentMapBoundsRect);
return currentMapBoundsRect.contains(currentDevicePosition.x, currentDevicePosition.y);
}
Ok in quanto mi c'è voluto qualche tempo per trovare una soluzione di lavoro semplice mi post qui per tutti dopo di me;) Nel vostro sottoclasse di MapView basta usare il seguente:
GeoPoint topLeft = this.getProjection().fromPixels(0, 0);
GeoPoint bottomRight = this.getProjection().fromPixels(getWidth(),getHeight());
Questo è tutto, quindi è possibile ottenere le coordinate tramite
topLeft.getLatitudeE6()/1E6
topLeft.getLongitudeE6()/1E6
e
bottomRight.getLatitudeE6()/1E6
bottomRight.getLongitudeE6()/1E6
Si prega di interrompere il reposting esattamente lo stesso rispondere a più post. Se sono duplicati, contrassegnali come tali. Se non lo sono, quindi adattare la risposta alla domanda specifica posta. –
Non ha funzionato. –
Unire le punte here, here e here:
Ecco il codice completo del mio CustomMapView:
package net.alouw.alouwCheckin.ui.map;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Pair;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
/**
* @author Felipe Micaroni Lalli ([email protected])
*/
public class CustomMapView extends MapView {
public CustomMapView(Context context, String s) {
super(context, s);
}
public CustomMapView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}
public CustomMapView(Context context, AttributeSet attributeSet, int i) {
super(context, attributeSet, i);
}
/**
*
* @return a Pair of two pairs with: top right corner (lat, lon), bottom left corner (lat, lon)
*/
public Pair<Pair<Double, Double>, Pair<Double, Double>> getMapCorners() {
GeoPoint center = getMapCenter();
int latitudeSpan = getLatitudeSpan();
int longtitudeSpan = getLongitudeSpan();
double topRightLat = (center.getLatitudeE6() + (latitudeSpan/2.0d))/1.0E6;
double topRightLon = (center.getLongitudeE6() + (longtitudeSpan/2.0d))/1.0E6;
double bottomLeftLat = (center.getLatitudeE6() - (latitudeSpan/2.0d))/1.0E6;
double bottomLeftLon = (center.getLongitudeE6() - (longtitudeSpan/2.0d))/1.0E6;
return new Pair<Pair<Double, Double>, Pair<Double, Double>>(
new Pair<Double, Double>(topRightLat, topRightLon),
new Pair<Double, Double>(bottomLeftLat, bottomLeftLon));
}
}
- 1. Come posso sapere se un controllo Delphi è attualmente visibile?
- 2. Come posso verificare se un UIViewController è attualmente visualizzato?
- 3. Determinare quale frammento è attualmente visibile in ViewPager
- 4. Come posso determinare se viene visualizzato un pulsante Indietro?
- 5. Determinare se un indicatore è visibile in Google Maps
- 6. Controlla se la mia QMainWindow è attualmente visibile in Qt
- 7. Come posso determinare quando viene visualizzato UICollectionViewCell?
- 8. Determinare se una finestra è visibile o non utilizzare C#
- 9. Come posso determinare se un metodo astratto è implementato?
- 10. Come posso determinare se un file è bloccato usando VBS?
- 11. Come posso determinare se un oggetto jQuery è differito?
- 12. Come posso determinare se un file è vuoto?
- 13. Come posso determinare se un UILabel è stato toccato?
- 14. Determinare se un tipo è statico
- 15. Come determinare se un evento è già stato sottoscritto
- 16. Come determinare se un poliedro è convesso?
- 17. Come scoprire se una parte di una NSWindow è attualmente visibile (non solo ordinata)
- 18. Rilevare se un elemento è realmente visibile
- 19. Come verificare se uno scorrimento è attualmente visibile in WPF DataGrid?
- 20. Come scoprire se WebView è visualizzato/su schermo/visibile utilizzando JavaScript
- 21. Determinare se un elemento in un iframe è visibile sullo schermo
- 22. jquery n-esimo figlio che è attualmente visibile
- 23. Come UIAutomation determinare se un UIAElement.isVisible()
- 24. Come determinare se una cella del foglio di lavoro è visibile/visualizzata in VBA?
- 25. Android: Verifica se un frammento è visibile
- 26. Posso determinare se una stringa è un ObjectID MongoDB?
- 27. Come verificare se una NSWindow è visibile
- 28. Esiste una proprietà/metodo per determinare se un TcpListener è attualmente in ascolto?
- 29. C'è un modo per determinare se una selezione HTML è attualmente aperta?
- 30. Come posso determinare se MS Office 2007 SP2 è installato?
Tip, basta prestare attenzione su questo: http://stackoverflow.com/questions/ 2667386/mapview-getlatitudespan-and-getlongitudespan-not-working –