Клуб API Карт

Найдено на тему «maps»:
Как создать кластер в Yandex Map Kit?
Вадим Селезнев
16 октября 2017, 15:39

Добрый день! 

Используем SDK YMK для Android

dependencies {
    ///.....
    compile 'ru.yandex:yandexmapkit:2.5.4@aar'
}

не могу найти функцию кластеризации(объединения в группы). Подкажите, для ее реализации нужно перейти с sdk на js ?

2 комментария
MapKit,maps
Список городов в маршруте
Andrew
18 марта 2017, 16:34

Предположим имееется маршрут из точки А в точку Б, требуется получить список городов попадающих в этот маршрут. Как это можно реализовать?

1 комментарий
yandex api,yandex,API yandex,maps,maps.yandex.ru
Получение списка городов, областей, районов улиц по выбранной стране
temahunter
18 января 2017, 12:37

Добрый день. Не подскажете, на данный момент есть возможность получить через API список областей, районов, городов, улиц по указанной стране? Что-то типо:

  • api.getRegions("Беларусь") //для получения всех областей
  • api.getDistricts("Минская область") //для получения всех районов в области
  • api.getCities("Копыльский район") //для получения населенных пунктов
  • api.getStreets("Черногубово") //для получения улиц

Можно как-нибудь получить что-то типо КЛАДРа на любую страну (в пределах СНГ, без указания домов, индексов. Достаточно областей, районов, насел. пунктов и улиц в них).

Заранее спасибо за ответ

1 комментарий
maps,API yandex,api
Открытие балуна на мобильных устройствах
Удалённый пользователь
29 сентября 2016, 13:15

Добрый день, сделал карту с группой объектов, вроде бы все ок, кроме одного, не открывается baloon на мобильных устройствах, подскажите в чем может быть проблема.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
</head>
<body>
<div id="map_json" style="display: none">[{"price":"0","tarifs_type":"2","srok_dostavki":"4-5","pickup_place":"\u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0431\u0443\u0440\u0433 (\u0410\u043c\u0443\u043d\u0434\u0441\u0435\u043d\u0430)","pickup_places_type_name":"\u0410","address":"\u0443\u043b. \u0410\u043c\u0443\u043d\u0434\u0441\u0435\u043d\u0430, \u0434. 65","proezd_info":"\u0422\u0426  \u041a\u0418\u0422  1 \u044d\u0442\u0430\u0436 - \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 \u0433\u0438\u043f\u0435\u0440\u043c\u0430\u0440\u043a\u0435\u0442\u0430 \u0420\u0410\u0419\u0422","phone":"8-343-247-81-11","worktime":"\u043f\u043d - \u043f\u0442: 10.00 - 18.00","comission_percent":"1.5","is_terminal":"0","to_city_code":"497183","pickup_place_code":"474570","delivery_partner":{},"partner":{},"is_basic":"1","obl_km_pay":"0","latitude":"56.7868666","longitude":"60.5672618"},{"price":"0","tarifs_type":"2","srok_dostavki":"4-5","pickup_place":"\u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0431\u0443\u0440\u0433 (\u041c\u0430\u043b\u044b\u0448\u0435\u0432\u0430)","pickup_places_type_name":"\u0410","address":"\u0443\u043b. \u041c\u0430\u043b\u044b\u0448\u0435\u0432\u0430, \u0434.53","proezd_info":"\u0422\u0426   \u0410\u043d\u0442\u0435\u0439   1 \u044d\u0442\u0430\u0436 - \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432  \u041f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u0442\u043e\u043a ","phone":"8-343-247-81-11","worktime":"\u043f\u043d - \u043f\u0442: 9.00 - 18.00","comission_percent":"1.5","is_terminal":"0","to_city_code":"497183","pickup_place_code":"766233","delivery_partner":{},"partner":{},"is_basic":"1","obl_km_pay":"0","latitude":"56.8366997","longitude":"60.625145"},{"price":"0","tarifs_type":"2","srok_dostavki":"4-5","pickup_place":"\u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0431\u0443\u0440\u0433 \u041f\u0412\u0417 \u043d\u0430 \u041b\u0435\u043d\u0438\u043d\u0430","pickup_places_type_name":"\u0410","address":"\u043f\u0440-\u043a\u0442 \u041b\u0435\u043d\u0438\u043d\u0430, \u0434. 101","proezd_info":" \u041f\u0440\u043e\u0435\u0437\u0434 \u0434\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438   \u0423\u0440\u0430\u043b\u044c\u0441\u043a\u0438\u0439 \u0444\u0435\u0434\u0435\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442  : - \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043d\u044b\u0435 \u0442\u0430\u043a\u0441\u0438: \u2116 034, 029, 050, 030, 054, 040, 022; - \u0430\u0432\u0442\u043e\u0431\u0443\u0441\u044b: \u2116 60, 28, 50, 54, 27, 28, 61, 10, 157, 5, 8; - \u0442\u0440\u0430\u043c\u0432\u0430\u0438: \u2116 23, 32, 18, 4, 22, 15, 13, 8, 26. \u0412\u043e\u0439\u0442\u0438 \u0432\u043e \u0434\u0432\u043e\u0440 \u043f\u0440-\u043a\u0442 \u041b\u0435\u043d\u0438\u043d\u0430 101 (\u0432 \u044d\u0442\u043e\u043c \u0434\u043e\u043c\u0435: \u0411\u0430\u043d\u043a \u0412\u0422\u041124,\u041b\u0435\u0442\u0443\u0430\u043b\u044c,\u041f\u043e\u043b\u044c \u0411\u0435\u0439\u043a\u0435\u0440\u0438), \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u043e\u0434 \u0432\u044b\u0432\u0435\u0441\u043a\u0443   \u043f\u0443\u043d\u043a\u0442 \u0432\u044b\u0434\u0430\u0447\u0438 \u0437\u0430\u043a\u0430\u0437\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432   \u0441\u0442\u0435\u043a\u043b\u044f\u043d\u043d\u0430\u044f \u0434\u0432\u0435\u0440\u044c, \u0446\u043e\u043a\u043e\u043b\u044c\u043d\u044b\u0439 \u044d\u0442\u0430\u0436. ","phone":"+7(343)287-3-284","worktime":"\u041f\u043d-\u041f\u0442 10:00-21:00","comission_percent":"1.5","is_terminal":"0","to_city_code":"497183","pickup_place_code":"740531","delivery_partner":{},"partner":{},"is_basic":"1","obl_km_pay":"0","latitude":"56.8396463","longitude":"60.6134245"}]</div>
<div id="map" style="height:500px; widht: 700px; margin-bottom: 20px"></div>
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"> </script>
<script>
    function yMapsPickup() {
        ymaps.ready(function () {
            var arPickup =  $.parseJSON($('#map_json').text());
            var myGeocoder = ymaps.geocode('Екатеринбург');
            myGeocoder.then(
                    function (res) {
                        var firstGeoObject = res.geoObjects.get(0);
                        var myMap = new ymaps.Map('map', {
                            center: firstGeoObject.geometry.getCoordinates(),
                            zoom: 10,
                            controls: ["zoomControl"]
                        });
                        myMap.behaviors.disable('scrollZoom');
                        var myGeoObjects = [];
                        $.each(arPickup, function(key ,row){
                            if(row.price == undefined){
                                row.price = 0;
                            }
                            myGeoObjects[key] = new ymaps.GeoObject({
                                geometry: {
                                    type: "Point",
                                    coordinates: [row.latitude, row.longitude]
                                },
                                properties: {
                                    balloonContentHeader: 'инфа',
                                    balloonContentBody: '<h4> '+row.pickup_place+'</h4>'+
                                    '<b>Адрес:</b> '+row.address+'<br>'+
                                    '<b>Проезд:</b> '+row.proezd_info+'<br>'+
                                    '<b>Тел.:</b> '+row.phone+'<br>'+
                                    '<b>Режим работы.:</b> '+row.worktime+'<br>'+
                                    '<b>Срок доставки:</b> '+row.srok_dostavki+'<br>'+
                                    '<b>Цена:</b> '+row.price+'<br>'
                                }
                            });
                        });
                        var myClusterer = new ymaps.Clusterer();
                        myClusterer.add(myGeoObjects);
                        myMap.geoObjects.add(myClusterer);
                    },
                    function (err) {
                        console.log('error');
                    }
            );

        })
    }
    $(function () {
        yMapsPickup();
    });
</script>
</body>
</html>

maps,yandex api
Геокодирование "на лету"
AS
24 августа 2016, 21:31

Возможно ли использовать геокодирование без нанесения результатов на карту Яндекс (рассматривается вариент платного API в том числе) по примеру стороки поиска на Яндекс картах  https://yandex.ru/maps/  - пользователь вводит в строку поиска адрес (город, улица), ему подтягиваются в контекст возможные отфильтрованные результаты для которых можно определить координаты долготы и широты.

1 комментарий
геокодирование,maps,Платный API
Удаление кастомного балуна с карты
akubenov
7 августа 2016, 13:51

Добрый день всем.

Есть задача: При ховере на элемент списка магазинов подкрашивать метку на карте и также выводить название магазина в балуне. При этом одновременно могут быть покрашены несколько магазинов и показаны их балуны соответствено.

Для отображения нескольких балунов на карте отдновременно использую кастомные балуны:

var balloon = new ymaps.Balloon(this.map);

balloon.options.setParent(this.map.options);

balloon.options.set({
									shadow: false,
									layout: MyBalloonLayout,
									contentLayout: MyBalloonContentLayout,
									panelMaxMapArea: 0
});

balloon.setData({
   content: object.name
});

balloon.open(element.geometry.coordinates);

Вопрос: как удалять созданные кастомные балуны с карты? В документации не нашел как это можно сделать.

Сейчас удаляю балуны так $('selector').remove(). При следующем ховере создается новый балун.

1 комментарий
baloon,maps,API 2.1,custom ballon,yandex,map
Ошибка кластера при большом увеличении
happyluckybear
1 июня 2016, 22:28

http://jsfiddle.net/HappyCougar/j2e2xtts/1/

Карта зависает если приблизить до уровня разбития кластера на метки. Почему так, и где ошибка?

1 комментарий
maps,cluster
Корректировка на карте (WebView Android)
denis-baidak
16 апреля 2016, 18:05

Когда я передвигаюсь по карте а потом убираю палец карта смещаться на пол сантиметра. Как избавиться от этого?

MainActivity.java:
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView myWebView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);


        try {
            InputStream is = getAssets().open("MyLication.html");
            byte[] buffer = new byte[is.available()];
            is.read(buffer);
            is.close();

            String htmlText = new String(buffer);
            myWebView.loadDataWithBaseURL(
                    "http://com.d_code.webview.ymapapp",
                    htmlText,
                    "text/html",
                    "UTF-8",
                    null
            );
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

MyLication.html:

<!doctype html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>MyLocation</title>
    <script src="//api-maps.yandex.ru/2.0/?load=package.standard&lang=ru-RU" type="text/javascript"></script>

    <script type="text/javascript">
            ymaps.ready(init);

            function init () {
                new ymaps.Map('map', {
                center:[52.076015,23.723014],
                    zoom:18
                },
                {
                    suppressMapOpenBlock: true
                });
            }
        </script>
    <style type="text/css">
        html, body, #map {
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
        }
    </style>
</head>

<body>
<div id="map"></div>
</body>
</html>

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.d_code.webview.MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/webview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:clickable="false"
            android:contextClickable="false"
            android:focusable="false"
            android:focusableInTouchMode="false" />
    </RelativeLayout>

</android.support.design.widget.CoordinatorLayout>

1 комментарий
android,maps,api,WebView
сделать плавное открытие и закрытие hint
Дарья Миронова
22 марта 2016, 13:59

Здравствуйте. Хочу чтобы хинт отрывался и закрывался подобно тому как работают функции в jquery fadeIn и faveOut . Как это сделать? при закрытие если указать вот так myMap.hint.close() то закрытие происходит очень медленно. А если указать вот так myMap.hint.close(true); - то слишком быстро. Заметила что в доках 2.0 версии есть данные опции https://tech.yandex.ru/maps/doc/jsapi/2.0/ref/reference/Hint-docpage/  , а вот на 2.1 нет

3 комментария
hint,maps
Позиционирование hint у объекта
Дарья Миронова
21 марта 2016, 21:04

Здравствуйте. Не знаю как правильно сделать позиционирование hint у маркера. Хочу вот что сделать: При наведении на маркер нужно чтобы у него появлялся хинт, который не будет двигаться туда сюда пока мы водим мышкой по маркеру. Также хочу сделать чтобы если хинт не вмещается на карте чтобы он появлялся в свободном месте карты(т.е если маркер внизу карты, хинт поялвляется сверху). Пример как должно работать http://prntscr.com/ai54di - это по умолчанию. А если к примеру не влазит снизу то должно отобразить вот так http://prntscr.com/ai55k1 . 

Вот какую только смогла сделать реализацию.

               
myMap = new ymaps.Map('map', {
     center:[53.902257,27.561831], // Минск
     zoom:13
});

var myCollection = new ymaps.GeoObjectCollection(),
HintLayout = ymaps.templateLayoutFactory.createClass( "<div class='item-mark' style='display: block'>" +
   "<p class='it-name'>{{ properties.title }}</p>" +
    "<p class='rec-addr'>{{ properties.address }}</p>" +
    "</div>", {}
),
markers='<?= json_encode($markers) ?>';
markers = JSON.parse(markers);

markers.forEach(function(item, i, markers) {
    var coords = item.coord.split(','),
        myPlacemark = new ymaps.Placemark([coords[0],coords[1]],{
             category_alias : item.category_alias,
             account : item.account,
             address: "Москва, ул. Зоологическая",
             title: "Центр современного"
        },{
             hintLayout: HintLayout,
             openHintOnHover: false,
        });

        myPlacemark.events.add('mouseleave',function(e) {
             var object = e.get('target');
             object.hint.close(true);
        });

        myPlacemark.events.add('mouseenter',function(e) {
             var object = e.get('target');
             object.hint.open(object.geometry.getCoordinates());
        });

        myCollection.add(myPlacemark);
});

По данной реализации появляется хинт, но если он не влазит на карте, то он просто не виден, а надо чтобы он в свободном месте появлялся

9 комментариев
hint,maps