Advertisement
Guest User

Function

a guest
Jun 25th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. getCoord: (element) => {
  2. ymaps.ready(async () => {
  3. const yMap = service.of(element)
  4. var myPlacemark
  5. // Слушаем клик на карте.
  6. yMap.events.add('click', function (e) {
  7. var coords = e.get('coords');
  8.  
  9. // Если метка уже создана – просто передвигаем ее.
  10. if (myPlacemark) {
  11. myPlacemark.geometry.setCoordinates(coords);
  12. }
  13. // Если нет – создаем.
  14. else {
  15. myPlacemark = createPlacemark(coords);
  16. yMap.geoObjects.add(myPlacemark);
  17. // Слушаем событие окончания перетаскивания на метке.
  18. myPlacemark.events.add('dragend', function () {
  19. getAddress(myPlacemark.geometry.getCoordinates());
  20. });
  21. }
  22. getAddress(coords);
  23. });
  24.  
  25. // Создание метки.
  26. function createPlacemark(coords) {
  27. return new ymaps.Placemark(coords, {
  28. iconCaption: 'поиск...'
  29. }, {
  30. preset: 'islands#violetDotIconWithCaption',
  31. draggable: true
  32. });
  33. }
  34.  
  35. // Определяем адрес по координатам (обратное геокодирование).
  36. function getAddress(coords) {
  37. myPlacemark.properties.set('iconCaption', 'поиск...');
  38. ymaps.geocode(coords).then(function (res) {
  39. var firstGeoObject = res.geoObjects.get(0);
  40.  
  41. myPlacemark.properties
  42. .set({
  43. // Формируем строку с данными об объекте.
  44. iconCaption: [
  45. // Название населенного пункта или вышестоящее административно-территориальное образование.
  46. firstGeoObject.getLocalities().length ? firstGeoObject.getLocalities() : firstGeoObject.getAdministrativeAreas(),
  47. // Получаем путь до топонима, если метод вернул null, запрашиваем наименование здания.
  48. firstGeoObject.getThoroughfare() || firstGeoObject.getPremise()
  49. ].filter(Boolean).join(', '),
  50. // В качестве контента балуна задаем строку с адресом объекта.
  51. balloonContent: firstGeoObject.getAddressLine()
  52. });
  53. });
  54. }
  55. return(coords)
  56. })
  57. }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement