2017-10-07 65 views
5

Algolia'nın InstantSearch Android kütüphanesini kullanıyorum.Harita taşınırken işaretçileri nasıl güncelleyebilirim?

Bu benim Sorgu geçerli:

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

Ama haritayı taşıdığınızda, belirteçler yerde kalmak. Harita konum görünümünü taşıdığımda haritadaki yeni işaretçileri nasıl görüntüleyebilirim?

+0

Merhaba Thofiq, Stack Overflow'a hoş geldiniz! Sorunu çözen yanıtları kabul et/ver, hesabına yardım etmek için zaman ayıran kişiyi ödüllendirmek ve başkalarının bunu bilmesini sağlaması için yardım etmeyi unutmayın;) – PLNech

cevap

4

Temel olarak, harita değişikliklerini ve kullanıcının haritayı sürükleyip her seferinde sonuçları yeniden dinlemesini mi istiyorsunuz? Yapmanız gereken şey:

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

Hata gösteriliyor simgesi çözülemiyor GeoPoint –

+0

Benim hatam. "GeoPoint" değişkenini "merkez" olarak değiştirin. Ve import com.google.maps.GeoPoint import, 'kod değişiklikleri yaptım, şimdi çalışmalı –

+0

Teşekkürler ama işaretleyici sürekli bağlantı. Ayrıca sürekli görüntülenen Toast mesajını da (lat lng değeri için) ekledim. Ben döngü o zaman nasıl durmak için –