Dites que j'ai le contrôle mapview dans mon application Android. Si je sais qu'il existe un point de repère à une certaine latitude et longitude, comment puis-je déterminer si ce point de repère est actuellement visible sur l'écran de l'utilisateur? Existe-t-il une méthode pour obtenir les coordonnées des coins supérieur gauche et inférieur droit de la zone visible?Comment puis-je déterminer si un géopoint est affiché dans la zone actuellement visible?
Répondre
Vous pouvez projeter GeoPoint à point et vérifier si elle est boîte (0, largeur de l'écran) par (0, hauteur de l'écran)
Voir: https://developer.android.com/reference/com/google/android/gms/maps/Projection.html
http://developer.android.com/reference/com/google/android/gms/maps/Projection.html pour une nouvelle API Google Maps – skyman
Quelque chose comme ça fera l'affaire.
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, car il m'a fallu un certain temps pour trouver une solution de travail simple, je vais poster ici pour tous après moi;) Dans votre propre sous-classe de MapView il suffit d'utiliser les éléments suivants:
GeoPoint topLeft = this.getProjection().fromPixels(0, 0);
GeoPoint bottomRight = this.getProjection().fromPixels(getWidth(),getHeight());
C'est tout, alors vous pouvez obtenir les coordonnées via
topLeft.getLatitudeE6()/1E6
topLeft.getLongitudeE6()/1E6
et
bottomRight.getLatitudeE6()/1E6
bottomRight.getLongitudeE6()/1E6
Veuillez arrêter de le rediffuser exactement répondre à plusieurs messages. S'ils sont des doublons, marquez-les comme tels. Si ce n'est pas le cas, adaptez votre réponse à la question spécifique posée. –
Cela n'a pas fonctionné. –
Rejoindre les conseils here, here et here:
Voici le code complet de mon 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. déterminer si uiview est affiché
- 2. Vérification si un DIV est actuellement affiché sur la page
- 3. C#: Comment déterminer si ScrollBar pour un contrôle Scrollable est actuellement affiché?
- 4. CrystalReportViewer, vérifiez si un rapport est actuellement affiché?
- 5. Comment déterminer si une vue est visible dans un ListView?
- 6. Déterminer la zone visible d'un contrôle
- 7. Déterminer si une sous-vue est visible dans un UIScrollView
- 8. Déterminer si une touche est actuellement pressée
- 9. Comment vérifier si un défilement est actuellement visible dans WPF DataGrid?
- 10. Déterminer si un marqueur est visible dans Google Maps
- 11. Comment puis-je savoir si un contrôle Delphi est actuellement visible?
- 12. Vérifie si un UIAlertView est visible
- 13. Détection si une chaîne particulière est actuellement visible sur TextField()
- 14. Déterminer si l'élément est à l'intérieur ou à l'extérieur de la zone visible de l'élément conteneur
- 15. Comment vérifier si la vue d'un UIViewController spécifique est actuellement visible?
- 16. Comment déterminer quel dijit.layout.AccordionPane est actuellement sélectionné
- 17. Comment savoir si un UIView est visible et à l'écran?
- 18. jquery nième enfant qui est actuellement visible
- 19. Comment vérifier si un menu est affiché
- 20. Détecter si Tooltip est affiché?
- 21. Dans WPF, comment puis-je déterminer si un contrôle est visible pour l'utilisateur?
- 22. Déterminer si le contenu de dijit.dialog a été affiché
- 23. GetGridViewRows sélectionné dans l'ordre actuellement affiché
- 24. Déterminer si la côte est utilise actuellement EST ou EDT via iPhone SDK
- 25. Déterminer si un type est statique
- 26. Comment déterminer si un gif est animé?
- 27. Comment déterminer si un pthread est actif?
- 28. Trouver div visible actuellement dans jquery
- 29. Comment déterminer si objet est un NSNumber
- 30. Déterminez si un iframe est visible à l'écran
Conseil, faites attention à ce sujet: http://stackoverflow.com/questions/ 2667386/mapview-getlatitudespan-and-getlongitudespan-not-working –