2017-10-07 24 views
5

Tôi đang sử dụng thư viện Android InstantSearch của Algolia.Làm cách nào để cập nhật điểm đánh dấu khi di chuyển bản đồ?

Đây là Query tôi:

searcher.setQuery(new Query().setAroundLatLngViaIP(true).setAroundRadius(5000)). 

Nhưng khi tôi di chuyển bản đồ, đánh dấu ở lại tại chỗ. Làm cách nào để hiển thị các điểm đánh dấu mới trên bản đồ khi tôi di chuyển chế độ xem vị trí bản đồ?

+0

Xin chào Thofiq, chào mừng bạn đến với Stack Overflow! Hãy nhớ chấp nhận/upvote câu trả lời giải quyết vấn đề của bạn, để thưởng cho người cần thời gian để giúp bạn và để cho người khác biết điều này hữu ích;) – PLNech

Trả lời

4

Vì vậy, về cơ bản bạn muốn nghe những thay đổi trên bản đồ và mỗi lần người dùng kéo bản đồ và tải lại kết quả? Dưới đây là những gì bạn nên làm:

public class AwesomeCameraActivity extends FragmentActivity implements 
     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); 

     // Show the initial position 
     mMap.moveCamera(CameraUpdateFactory 
       .newLatLngZoom(new LatLng(YOUR_LATITUDE, YOUR_LONGITUDE), 10)); 
    } 

    @Override 
    public void onCameraIdle() { 
     // The camera/map stopped moving, now you can fetch the center of the map 
     GeoPoint center = mMap.getProjection().fromPixels(mMap.getHeight()/2, mMap.getWidth()/2); 
     double centerLat = (double)center.getLatitudeE6()/(double)1E6; 
     double centerLng = (double)center.getLongitudeE6()/(double)1E6; 

     // Now fire a new search with the new latitude and longitude 
     searcher.setQuery(new Query().setAroundLatLng(new AbstractQuery.LatLng(centerLat, centerLng)).setAroundRadius(5000)) 
    } 
} 
+0

Hiển thị lỗi: không thể giải quyết ký hiệu GeoPoint –

+0

Tệ của tôi. Thay đổi biến 'geoPoint' thành' center'. Và nhập 'import com.google.maps.GeoPoint;' Tôi đã thực hiện các thay đổi trong mã, nên hoạt động ngay bây giờ –

+0

Cảm ơn nhưng điểm đánh dấu liên tục nhấp nháy. Và tôi đã thêm tin nhắn bánh mì nướng (cho giá trị lat lng) cũng liên tục hiển thị. Tôi điều đó là looping sau đó làm thế nào để ngăn chặn nó –

Các vấn đề liên quan