Có cách nào thông qua API bản đồ android, nơi tôi có thể phát hiện trung tâm bản đồ sau khi hoạt ảnh xoay đã hoàn tất không? Tôi muốn sử dụng thông tin này để tải đánh dấu từ máy chủ động. Cảm ơn BDbản đồ android: cách xác định trung tâm bản đồ sau khi kéo xong
Trả lời
Bạn đang sử dụng MapActivity
? Dưới đây là đoạn code tôi đã sử dụng:
MapView mapView = (MapView)findViewById(R.id.map);
Projection projection = mapView.getProjection();
int y = mapView.getHeight()/2;
int x = mapView.getWidth()/2;
GeoPoint geoPoint = projection.fromPixels(x, y);
double centerLatitude = (double)geoPoint.getLatitudeE6()/(double)1E6;
double centerLongitude = (double)geoPoint.getLongitudeE6()/(double)1E6;
Bạn cần phải thêm mã tương tự như sau thêm:
@Override
public boolean dispatchTouchEvent(MotionEvent event)
{
boolean result = super.dispatchTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_UP)
reload_map_data(); /// call the first block of code here
return result;
}
Tôi cũng đã được tìm kiếm một "đã làm cuối kéo" Giải pháp phát hiện bản đồ trung tâm tại thời điểm này chính xác sau khi bản đồ kết thúc chuyển động. Tôi đã không tìm thấy nó, vì vậy tôi đã thực hiện triển khai đơn giản này đã hoạt động tốt:
private class MyMapView extends MapView {
private GeoPoint lastMapCenter;
private boolean isTouchEnded;
private boolean isFirstComputeScroll;
public MyMapView(Context context, String apiKey) {
super(context, apiKey);
this.lastMapCenter = new GeoPoint(0, 0);
this.isTouchEnded = false;
this.isFirstComputeScroll = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
this.isTouchEnded = false;
else if (event.getAction() == MotionEvent.ACTION_UP)
this.isTouchEnded = true;
else if (event.getAction() == MotionEvent.ACTION_MOVE)
this.isFirstComputeScroll = true;
return super.onTouchEvent(event);
}
@Override
public void computeScroll() {
super.computeScroll();
if (this.isTouchEnded &&
this.lastMapCenter.equals(this.getMapCenter()) &&
this.isFirstComputeScroll) {
// here you use this.getMapCenter() (e.g. call onEndDrag method)
this.isFirstComputeScroll = false;
}
else
this.lastMapCenter = this.getMapCenter();
}
}
Đó là, tôi hy vọng điều đó sẽ hữu ích! o/
Điều này đã hiệu quả, đây phải là câu trả lời được chấp nhận. – Federico
Kể từ tháng tám năm 2016 Maps dành cho Android là khả năng phát hiện các sự kiện như onCameraMoveStarted
(và lý do cho sự di chuyển, ví dụ như, REASON_GESTURE
, REASON_DEVELOPER_ANIMATION
.
Các mã sau (chủ yếu là lấy từ docs) đưa ra một ý tưởng về những gì bạn có thể đạt được:?.
public class MyCameraActivity extends FragmentActivity implements
OnCameraMoveStartedListener,
OnCameraMoveListener,
OnCameraMoveCanceledListener,
OnCameraIdleListener,
OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_camera);
SupportMapFragment mapFragment =
(SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
mMap = map;
mMap.setOnCameraIdleListener(this);
mMap.setOnCameraMoveStartedListener(this);
mMap.setOnCameraMoveListener(this);
mMap.setOnCameraMoveCanceledListener(this);
// Show Sydney on the map.
mMap.moveCamera(CameraUpdateFactory
.newLatLngZoom(new LatLng(-33.87365, 151.20689), 10));
}
@Override
public void onCameraMoveStarted(int reason) {
if (reason == OnCameraMoveStartedListener.REASON_GESTURE) {
Toast.makeText(this, "The user gestured on the map.",
Toast.LENGTH_SHORT).show();
} else if (reason == OnCameraMoveStartedListener
.REASON_API_ANIMATION) {
Toast.makeText(this, "The user tapped something on the map.",
Toast.LENGTH_SHORT).show();
} else if (reason == OnCameraMoveStartedListener
.REASON_DEVELOPER_ANIMATION) {
Toast.makeText(this, "The app moved the camera.",
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCameraMove() {
Toast.makeText(this, "The camera is moving.",
Toast.LENGTH_SHORT).show();
}
@Override
public void onCameraMoveCanceled() {
Toast.makeText(this, "Camera movement canceled.",
Toast.LENGTH_SHORT).show();
}
@Override
public void onCameraIdle() {
Toast.makeText(this, "The camera has stopped moving.",
Toast.LENGTH_SHORT).show();
// Here you get the camera center
GeoPoint geoPoint = projection.fromPixels(mMap.getHeight()/2, mMap.getWidth()/2);
double centerLat = (double)geoPoint.getLatitudeE6()/(double)1E6;
double centerLng = (double)geoPoint.getLongitudeE6()/(double)1E6;
}
}
- 1. tên trung tâm ggplot trên bản đồ
- 2. Cải thiện tên trung tâm quận ggplot & bản đồ
- 3. Nút android văn bản trung tâm
- 4. Bản đồ bản đồ - cách giữ bản đồ bên trong làm bản đồ?
- 5. ggplot2: Bản đồ nhiệt nhanh Bản đồ, định hình lại?
- 6. Bản đồ Android v2 xoay bản đồXem với la bàn
- 7. Bản đồ HadoopBắt đầu ra trung gian
- 8. Phát hiện khi bản đồ Android v2 đã tải
- 9. Định dạng bản đồ ggplot2
- 10. Bản đồ Google Maps.getBounds() ngay lập tức sau khi gọi đến bản đồ.fitBounds
- 11. Google Maps Android - Bản đồ không còn hiển thị sau khi thay đổi kho khóa
- 12. bản đồ android: Cách bấm Long Map?
- 13. Bản đồ + bản đồ choropleth trong R
- 14. Phóng to đến trung tâm trên bản đồ trong API Google Maps V3
- 15. Làm cách nào để tôi có thể tải KML trong bản đồ google mà không thay đổi trung tâm bản đồ
- 16. Trung tâm bản đồ của Google ở góc trên cùng bên trái
- 17. Google Maps Api: đặt trung tâm của bản đồ thành độ lệch theo pixel?
- 18. Bản đồ sâu Bản đồ trong Groovy
- 19. Google maps API - Bản đồ trung tâm về vị trí hiện tại của khách hàng
- 20. Văn bản trung tâm trong bánh mì nướng trong Android
- 21. căn giữa trung tâm văn bản với android
- 22. nhận địa chỉ sau khi nhấp vào bản đồ
- 23. Làm thế nào để vô hiệu hóa android đánh dấu bản đồ trung tâm nhấp chuột tự động
- 24. Google Map V3 không định tâm, chỉ hiển thị một phần bản đồ
- 25. Làm cách nào để tạo ra bản đồ bản đồ?
- 26. Căn giữa điểm đánh dấu bản đồ trong Android
- 27. Cách tắt tính năng xoay bản đồ trong Phân đoạn Bản đồ Android
- 28. Cách trừ một danh sách các phím bản đồ từ một bản đồ khác và lấy bản đồ mới (bản đồ A - mab B = bản đồ C)
- 29. Tạo bản đồ ngoại tuyến trên Android
- 30. bản đồ android tự động xoay
điều này xử lý các "quăng", nơi bản đồ tiếp tục di chuyển một cách ít nếu bạn ném nó (sau khi bạn nhấc ngón tay lên) –
Hi cảm ơn cho marcc trả lời, nhưng tôi cần tìm một cách để phát hiện khi hoạt ảnh pan dừng lại để Tôi có thể sử dụng mã tính toán trung tâm của bạn tại thời điểm đó. – vamsibm