yandex / mapkit-ios-demo

MapKit iOS demo
Other
85 stars 27 forks source link

userLocationLayer месторасположение и Anchor #34

Closed blackFishX closed 5 years ago

blackFishX commented 5 years ago

отображаю текущее месторасположение на карте :

        mapView.mapWindow.map.isRotateGesturesEnabled = false
        mapView.mapWindow.map.move(with:
            YMKCameraPosition(target: YMKPoint(latitude: 0, longitude: 0), zoom: 14, azimuth: 0, tilt: 0))

        let scale = UIScreen.main.scale
        let userLocationLayer = mapView.mapWindow.map.userLocationLayer
        userLocationLayer.isEnabled = true
        userLocationLayer.isHeadingEnabled = true
        userLocationLayer.setAnchorWithAnchorNormal(
            CGPoint(x: 0.5 * mapView.frame.size.width * scale, y: 0.5 * mapView.frame.size.height * scale),

            anchorCourse: CGPoint(x: 0.5 * mapView.frame.size.width * scale, y: 0.83 * mapView.frame.size.height * scale))

        userLocationLayer.setObjectListenerWith(self)
        mapView.mapWindow.map.addTapListener(with: self)

        mapView.mapWindow.map.mapObjects.addTapListener(with: self)

понадобилось убрать привязку к к текущему месторасположению (что бы мог свободно "гулять" по карте и не перекидывало на изначальную точку), из предыдущего вопроса https://github.com/yandex/mapkit-ios-demo/issues/26 узнал, что нужно не задавать userLocationLayer.setAnchorWithAnchorNormalили же вызывать resetAnchor, но : если не задаю userLocationLayer.setAnchorWithAnchorNormalили же чуть ниже вызываю userLocationLayer.resetAnchor() - карта не грузится (голубой экран с логотипом яндекса).

Подскажите, как правильно отвязать привязку экрана к текущему расположению ?

blackFishX commented 5 years ago

проблему решил сделав ресет в onCameraPositionChanged

eberkovich commented 5 years ago

UserLocationLayer не может влиять на загрузку тайлов и в случае если бы не грузились тайлы рисовалась бы сетка, а не синий экран. Просто после того, как была отключена привязка к текущему местоположению карта оставалась в том месте куда была спозиционирована:

YMKPoint(latitude: 0, longitude: 0)

А там как раз океан.