Добрый день! Очень необходима ваша помощь, буду благодарна если кто-нибудь подскажет решение проблемы. Я начинающий юзер, и очень плохо ориентируюсь в данном вопросе. Добавляю яндекс карту расчет стоимости маршрута на сайт. Функция Расчета там реализована отлично,но необходимо вместо стандартного одного поля ввода адреса сделать два поля (откуда/куда) ,и чтобы введенный текст в эти поля задавал начальню и конечную точку маршрута на карте.
Вот код калькулятора:
<!-- Если вы используете API локально, то в URL ресурса необходимо указывать протокол в стандартном виде (http://...)-->
<script src="http://api-maps.yandex.ru
<script type="text/javascript">// <![CDATA[
// Константы.
var DELIVERY_TARIF = 14,
MINIMUM_COST = 300;
ymaps.ready(function () {
var center = [55.556, 42.021],
map = new ymaps.Map('map', {
center: center,
zoom: 10,
type: 'yandex#map',
behaviors: ['scrollZoom', 'drag']
}),
calculator = new DeliveryCalculator(map, center);
var search = new ymaps.control.SearchControl({
useMapBounds : true,
noCentering : true,
noPlacemark : true
});
map.controls.add(search, { right: 5, top: 5 });
search.events.add("resultselect", function (e) {
var results = search.getResultsArray(),
selected = e.get('resultIndex'),
point = results[selected].geometry.getCoordinates();
map.events.fire('click', new ymaps.Event({ coordPosition : point }));
});
});
function DeliveryCalculator(map, finish) {
this._map = map;
this._start = null;
this._finish = null;
this._route = null;
map.events.add('click', this._onClick, this);
}
var ptp = DeliveryCalculator.prototype;
ptp._onClick = function (e) {
var position = e.get('coordPosition');
if(!this._start) {
this._start = new ymaps.Placemark(position, { iconContent: "А" }, { draggable : true });
this._start.events.add('dragend', this._onDragEnd, this);
this._map.geoObjects.add(this._start);
} else if (!this._finish) {
this._finish = new ymaps.Placemark(position, { iconContent: "Б" }, { draggable : true });
this._finish.events.add('dragend', this._onDragEnd, this);
this._map.geoObjects.add(this._finish);
} else {
/*position && this._start.geometry.setCoordinates(position);*/
this._map.geoObjects.remove(this._start);
this._start = null;
this._map.geoObjects.remove(this._finish);
this._finish = null;
this._map.geoObjects.remove(this._route);
this._route = null;
}
this.getDirections();
};
ptp._onDragEnd = function (e) {
this.getDirections();
};
ptp.getDirections = function () {
var self = this,
start = this._start.geometry.getCoordinates(),
finish = this._finish.geometry.getCoordinates();
this._route && this._map.geoObjects.remove(this._route);
ymaps.geocode(start)
.then(function (geocode) {
var address = geocode.geoObjects.get(0) && geocode.geoObjects.get(0)
ymaps.route([start, finish])
.then(function (router) {
var distance = Math.round(router.getLength() / 1000);
message = '<span>Расстояние: ' + distance + 'км.</span>
' +
'<span style="font-weight: bold; font-style: italic">Стоимость доставки: %sр.</span>';
self._route = router.getPaths();
self._route.options.set({ strokeWidth: 5, strokeColor: '0000ffff', opacity: 0.5 });
self._map.geoObjects.add(self._route);
self._start.properties.set("balloonContentBody", address + message.replace('%s', self.calculate(distance)));
self._start.balloon.open();
});
});
};
ptp.calculate = function (len) {
var cost = len * DELIVERY_TARIF;
return cost < MINIMUM_COST && MINIMUM_COST || cost;
};
ymaps.ready(init);
// ]]></script>
<div id="map" style="width: 700px; height: 600px;"><!--карта--></div>
Подскажите пожалуйста выход из ситуации. Очень нужна ваша помощь!!!!!!