Клуб API Карт

Определение города по ip пользователя

EgorPost
27 декабря 2016, 21:26

Доброго всем времени суток!

Используюо апи 2.1 яндекс карт для определения города пользователя.

Для этого пытаюсь фиксировать попадание  точки полученной путем геолокации в заданный круг.

Код при этом такой:

          <script src="//api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
        <script type="text/javascript">
                ymaps.ready(init);
                
                var lt, lng, shop_lt, shop_lng, user_point;
                
                function init() {
                        
                        var geolocation = ymaps.geolocation;
                        
                        //lt = 31;
                        //lng = 55;
                        
                         geolocation.get({
                                provider: 'yandex',
                                mapStateAutoApply: true
                        }).then(function (result) {
                                user_point = result.geoObjects.get(0);
                        });
                        
                        shop_lt = 30.357433;
                        shop_lng = 59.873853;
                        
                        //alert(lt+' '+lng+' '+shop_lt+' '+shop_lng);
                        
                        
                        circle = new ymaps.Circle([[shop_lt, shop_lng], 50000]);
                        
                        var objects = new ymaps.GeoObjectCollection().add(user_point)
                        
                        var result = objects.searchInside(circle);
                        alert(result.getLength());        */
                }
        </script>

получаю такую ошибку:
        http://my.jetscreenshot.com/22796/20161227-njmv-228kb

как я понимаю ошибка идет при инициализации объекта GeoObjectCollection

        Подскажите плз, что я делаю не так?

        Спасибо!

6 комментариев
Подписаться на комментарии к посту
user_point не будет доступна вне обработчика then, это же асинхронный запрос
Такой код тоже не дает результата:
 geolocation.get({
  provider: 'yandex',
  mapStateAutoApply: true
}).then(function (result) {
  user_point = result.geoObjects.get(0);

 shop_lt = 30.357433;
 shop_lng = 59.873853;

 var circle = new ymaps.Circle([[shop_lt, shop_lng], 50000]);

 var objects = new ymaps.GeoObjectCollection().add(user_point);

 var result = objects.searchInside(circle);
 alert(result.getLength());
});
я пробовал отлаживать в фаербаге - до последнего alert выполнение вообще не доходит
где-то увязает в objects.searchInside(circle);
Буду благодарен за любую помощь!
EgorPost,
У GeoObjectCollection нет метода searchInside 
Обновлено 28 декабря 2016, 16:25
Такой код тоже почему-то не работает:
<script src="//api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
<script type="text/javascript">
ymaps.ready(init);

  var lt, lng, shop_lt, shop_lng, user_point;

function init() {

    var geolocation = ymaps.geolocation;

    geolocation.get({
    provider: 'yandex',
    mapStateAutoApply: true
}).then(function (result) {
    user_point = result.geoObjects.get(0);

    shop_lt = 30.357433;
    shop_lng = 59.873853;

    var circle = new ymaps.Circle([[shop_lt, shop_lng], 50000]);

    var objects = new ymaps.GeoObjectCollection().add(user_point);

    var result = objects.searchInside(circle);
    alert(result.getLength());
});

}
</script>
Консоль хрома ошибок не выдает никаких. Но при отладке в фаербаге
выполнение не доходит до последнего алерта в обработчике.
http://my.jetscreenshot.com/22796/20161228-ohrm-192kb
Хелп ми!
EgorPost,
еще раз, у GeoObjectCollection нет метода searchInside. Ошибки нет потому, что ее ловит Промис
Обновлено 28 декабря 2016, 16:36
сори за дубль - буду разбираться