нужного функционала нет <...> Сталкивался может кто с подобным и нарыл хорошую обертку для API?
сделатьКрасиво
, и вам самому не надо работать ни головой, ни руками? Нет, такого нет и не будет.if (coord.every((n, i) => n === coordinates[i])) {
placemark.balloon.open();
}
const placemarks = elem.find('.map-balloonContent').get().map(n => createPlacemark({
coord: $(n).data('coord'),
content: $(n).html(),
}));
placemarks.forEach(n => myMap.geoObjects.add(n));
placemarks[0].balloon.open();
elem.on('clickAddress', function(e, coord) {
placemarks.find(n => n.geometry.getCoordinates().every((m, i) => m === coord[i])).balloon.open();
});
<div>{{ address }}</div>
<div ref="map"></div>
data: () => ({
coords: [ ... ],
address: '',
}),
mounted() {
ymaps.ready(() => {
const map = new ymaps.Map(this.$refs.map, { ... });
const marker = new ymaps.Placemark(this.coords, {}, {
draggable: true,
});
marker.events.add('dragend', e => {
this.coords = e.get('target').geometry.getCoordinates();
});
map.geoObjects.add(marker);
this.$watch('coords', {
immediate: true,
handler(coords) {
ymaps.geocode(coords).then(r => {
this.address = r.geoObjects.get(0).properties.get('name');
});
},
});
});
},
У меня пока получается получить только полную строку адреса дома, по которому пользователь кликнул при помощи getAddressLine()
<...>
хотелось бы иметь что-то проще чем парсинг строки с адресом
getPremiseNumber{String|null} getPremiseNumber()
Возвращает номер здания (включая корпус, владение и прочие дополнительные признаки).
var pos = this.getAttribute('data-goto'); myMap.panTo(pos, {
data-goto="[59.938531, 30.313497]"
this.getAttribute('data-goto')
---> JSON.parse(this.dataset.goto)
const myPlacemark = new ymaps.Placemark([ 59.8755, 30.3955 ], {
hintContent: '<b>Адрес/метро:</b> Белы Куна 21-Н, 1й этаж/ м.Международная <br> <b>Площадь:</b> 45 м <br> <b>Стоимость:</b> 70 000 р. в мес. + К/У' ,
iconContent: 'Магазин (нежилой фонд)'
}, {
preset: 'islands#darkGreenStretchyIcon'
});
balloonOffset: [ -50, -50 ]
, например), чтобы увидеть, что находится под ним, убедиться, что метка на месте. Если вдруг нет - воспроизводите свою ситуацию в песочнице, попробуем разобраться. Я так понял, вы предлагаете код, который находится в функции setMarkers() перенести в initializeYandexMap(), я прав?
const marker = new ymaps.Placemark([ latitude, longitude ], {}, {
preset: 'islands#redHomeIcon',
});
map.geoObjects.add(marker);
const routes = new ymaps.GeoObjectCollection();
map.geoObjects.add(routes);
routesData.forEach(n => ymaps.route(n).then(route => {
route.events.add('mouseenter', onMouseEnter.bind(route));
route.events.add('mouseleave', onMouseLeave);
routes.add(route);
}));
function onMouseEnter() {
routes.each(n => n.options.set('visible', n === this));
}
function onMouseLeave() {
routes.each(n => n.options.set('visible', true));
}
this.points = e.get('target').model.getReferencePoints();
this.points = e.get('target').model.getReferencePoints().slice();
function comparison(newPoints, oldPoints) {
const
oldPoint = oldPoints.find(n => !newPoints.includes(n)),
newPoint = newPoints.find(n => !oldPoints.includes(n));
if (oldPoint && newPoint) {
console.log('update', oldPoint, 'to', newPoint);
} else if (oldPoint) {
console.log('delete', oldPoint);
} else if (newPoint) {
console.log('create', newPoint);
}
}
<div id="map" class="black-and-white"></div>
.black-and-white {
filter: grayscale(100%);
}
document.querySelector('#map').addEventListener('click', function() {
this.classList.remove('black-and-white');
}, { once: true });
map.setBounds(map.geoObjects.getBounds())