OnCameraChangeListener для яндекс карт

Я хочу обнаружить изменение положения карты (такое же, как изменение камеры на карте) на картах Яндекса. Google Maps API предоставляет такую ​​возможность через OnCameraChangeListener(), но я не смог найти подходящий для Яндекса.

SO: Какая функция Google OnCameraChangeListener подходит для карт Яндекса?

Заранее спасибо.

2 ответа

Я знаю, что ответ слишком запоздал, но, возможно, поможет кому-то:

      class GeofenceActivity : ComponentActivity() , CameraListener {
    private lateinit var mapViewYandex: com.yandex.mapkit.mapview.MapView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        SetupMapInitializing(this)
        mapViewYandex.map.addCameraListener(this)


    }
private fun SetupMapInitializing(cx : Context){
    try {
        MapKitFactory.setApiKey("your-key")
        MapKitFactory.initialize(cx)
        I18nManagerFactory.setLocale(Locale.getDefault().language)
    } catch(e : IOException){
        e.printStackTrace()
    }
}

    override fun onCameraPositionChanged(
        p0: Map,
        p1: CameraPosition,
        p2: CameraUpdateReason,
        p3: Boolean
    ) {
        Log.w(
            "Yandex",
            p1.target.latitude.toString() + " , " +
                    p1.target.longitude.toString()
        )
    }
}

Вам нужно сверху добавить обработчик событий для карты с заголовкомboundschange

Вот пример простого кода:

      <script>
        var myMap;
        
        ymaps.ready(init);

        function init () {
            
            myMap = new ymaps.Map('map', {
                center: [55.76, 37.64], // Moscow
                zoom: 10
            });

            //add an event handler for detecting any change to the boudnaries of the map
            myMap.events.add('boundschange', onBoundsChange);

            //a callback function to do something with the new boundaries
            function onBoundsChange(e){
                console.log(e.originalEvent.newBounds);
            }
        }
    </script>  

И самый простой HTML:

      <!DOCTYPE html>

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Detecting boundary changes of a Yandex Map</title>
    
    <script src="https://api-maps.yandex.ru/2.1/?lang=en_RU&amp;apikey=<your API-key>" type="text/javascript"></script>
    <style>
        body, html {
            padding: 0;
            margin: 0;
            width: 100%;
            height: 100%;
        }
        #map {
            width: 100%;
            height: 90%;
        }
    </style> 
</head>
<body>
    <div id="map"></div>
</body>
</html>
Другие вопросы по тегам