Giả sử tôi có quyền kiểm soát chế độ xem bản đồ trong ứng dụng Android của mình. Nếu tôi biết một mốc tồn tại ở một vĩ độ và kinh độ nhất định, làm cách nào để xác định liệu mốc đó hiện có thể xem được trên màn hình của người dùng không? Có phương pháp nào để nhận tọa độ cho các góc trên bên trái và dưới cùng bên phải của khu vực hiển thị không?Làm cách nào để xác định liệu một địa chỉ được hiển thị trong khu vực hiện có thể xem?
Trả lời
Bạn có thể chiếu GeoPoint định tại điểm và kiểm tra xem nó là hộp (0, màn hình rộng) bởi (0, chiều cao màn hình)
Xem: https://developer.android.com/reference/com/google/android/gms/maps/Projection.html
http://developer.android.com/reference/com/google/android/gms/maps/Projection.html cho API Maps mới – skyman
Something như thế này sẽ làm các trick.
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 vì nó đã cho tôi một thời gian bây giờ để tìm một giải pháp làm việc đơn giản, tôi sẽ đăng nó ở đây cho tất cả sau khi tôi;) Trong lớp con của riêng bạn MapView chỉ cần sử dụng như sau:
GeoPoint topLeft = this.getProjection().fromPixels(0, 0);
GeoPoint bottomRight = this.getProjection().fromPixels(getWidth(),getHeight());
Thats tất cả, sau đó bạn có thể lấy tọa độ qua
topLeft.getLatitudeE6()/1E6
topLeft.getLongitudeE6()/1E6
và
bottomRight.getLatitudeE6()/1E6
bottomRight.getLongitudeE6()/1E6
Vui lòng dừng đăng lại chính xác trả lời cho nhiều bài đăng. Nếu chúng là bản sao, hãy gắn cờ chúng như vậy. Nếu không, hãy điều chỉnh câu trả lời của bạn cho câu hỏi cụ thể được đặt ra. –
Nó không hoạt động. –
Tham gia những lời khuyên here, here và here:
Đây là mã hoàn chỉnh của CustomMapView tôi:
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. Làm cách nào để phát hiện một liên lạc trên một khu vực cụ thể
- 2. Làm cách nào để chỉ hiển thị một quốc gia hoặc một khu vực cụ thể trong bản đồ của Google bằng cách sử dụng api?
- 3. Làm thế nào để hiện đang thực hiện khu vực?
- 4. Làm cách nào để xác định xem tìm kiếm của UISearchDisplayController có được hiển thị không?
- 5. Làm thế nào để xác định xem một ô bảng tính có thể nhìn thấy/được hiển thị trong VBA?
- 6. Làm cách nào để xác định bố cục cho các khu vực cụ thể trong ASP.Net MVC 4?
- 7. Làm cách nào để xác định liệu nút quay lại có được hiển thị không?
- 8. Hiển thị bản đồ Google từ một khu vực ẩn
- 9. Giữ chế độ xem android ở khu vực hiển thị nếu bàn phím xuất hiện
- 10. "Khu vực hiển thị" của một điều khiển?
- 11. Làm cách nào để chỉ định tên khu vực trong liên kết hành động?
- 12. Cách xác định xem một chế độ xem có hiển thị trong ListView không?
- 13. Làm cách nào để xác định liệu một phần tử DOM cụ thể có hiển thị hay không?
- 14. Làm cách nào để chụp màn hình của khu vực hiển thị UIScrollView?
- 15. Làm thế nào chúng ta có thể biết rằng bản đồ Tọa độ ở trong khu vực hiện tại hay không ở khu vực hiện tại?
- 16. Làm thế nào để có được UIImage của một khu vực cụ thể trong ios màn hình hiện
- 17. Khu vực địa lý Tên của một thành phố để có được Lat và Long
- 18. Cách thực hiện: UiBinder + GWT MVP + nhiều khu vực hiển thị độc lập
- 19. Làm thế nào để có được điểm đánh dấu bên trong một khu vực được chọn bằng cách kéo chuột?
- 20. Làm cách nào để chỉ định quốc gia/khu vực trong khi tạo bản đồ trong R?
- 21. PhpStorm xác định các vùng mã có thể đóng mở được (Khu vực kiểu Studio) có thể?
- 22. Làm thế nào để vẽ một hình chữ nhật trên một khu vực cụ thể trong một đồ thị matplotlib
- 23. Xác định xem địa chỉ email có 'công khai'
- 24. Xác định xem một chế độ xem phụ có hiển thị trong UIScrollView
- 25. Hiển thị biểu tượng thắng trên khu vực thông báo
- 26. Làm cách nào để phân tích mã Python để xác định các khu vực có vấn đề?
- 27. Xác định Khu vực nào trong Bản đồ (imageMap) được nhấp bằng JavaScript (hoặc jQuery)
- 28. Xác định khi nào Chế độ xem thực sự xuất hiện/biến mất khỏi vùng hiển thị của hoạt động
- 29. Html.Label để hiển thị địa chỉ email
- 30. Là khu vực mặc định cho Html.BeginForm luôn luôn là khu vực hiện tại trong ASP.NET MVC?
Mẹo, chỉ cần chú ý về vấn đề này: http://stackoverflow.com/questions/ 2667386/mapview-getlatitudespan-and-getlongitudespan-not-working –