JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://api-maps.yandex.ru/2.1/?lang=ru" type="text/javascript"></script>
<div id="map" style="width: 100%; height: 400px"></div>
JavaScript
var route, ch = 1;
var markers = [];
var point = [];
function init() {
var myMap = new ymaps.Map('map', {
center: [59.938, 30.313],
zoom: 9,
type: 'yandex#map',
behaviors: ['scrollZoom', 'drag'],
controls: []
}),
searchStartPoint = new ymaps.control.SearchControl({
options: {
useMapBounds: true,
noPlacemark: true,
noPopup: true,
placeholderContent: 'start',
size: 'large'
}
}),
calculator = new DeliveryCalculator(myMap, myMap.getCenter());
myMap.controls.add(searchStartPoint);
searchStartPoint.events
.add('resultselect', function(e) {
var results = searchStartPoint.getResultsArray(),
selected = e.get('index'),
point = results[selected].geometry.getCoordinates();
calculator.setStartPoint(point);
})
.add('load', function(event) {
// По полю skip определяем, что это не дозагрузка данных.
// По getRusultsCount определяем, что есть хотя бы 1 результат.
if (!event.get('skip') && searchStartPoint.getResultsCount()) {
searchStartPoint.showResult(0);
}
});
}
function DeliveryCalculator(map, finish) {
this._map = map;
this._start = null;
this._route = null;
map.events.add('click', this._onClick, this);
}
var ptp = DeliveryCalculator.prototype;
ptp._onClick = function(e) {
if (this._start) {
this.setFinishPoint(e.get('coords'));
} else {
//this.setStartPoint(e.get('coords'));
}
};
ptp._onDragEnd = function(e) {
this.getDirection();
}
ptp.getDirection = function() {
if (this._route) {
this._map.geoObjects.remove(this._route);
}
if (this._start && this._finish) {
var self = this,
start = this._start.geometry.getCoordinates(),
...