JSFiddle - React, Tailwind, and code Playground
by atach
HTML
<script src="http://puximex.finogeev.com.fstest.ru/templates/pux/js/kladr/jquery.kladr.min.js"></script>
<script src="http://api-maps.yandex.ru/2.1/?lang=ru_RU"></script>
<div id="map-1"></div>
<div class="add-panel" id="kladr_adr">
<div class="wrp">
<form class="add-panel__request regular__ctrls">
<div class="ffield">
<label class="ffield__lbl">
Город
</label>
<input name="city" type="text" class="long">
</div>
<div class="ffield">
<label class="ffield__lbl">
Улица
</label>
<input name="street" type="text" class="long">
</div>
<div class="ffield">
<label class="ffield__lbl">
Номер дома
</label>
<input name="building" type="text" class="small">
<label class="ffield__lbl2">
Корпус/строение
</label>
<input name="building-add" type="text" class="small">
</div>
</form>
</div>
</div>
CSS
body, html {
padding: 0;
margin: 0;
width: 100%;
height: 100%;
}
#map-1 {
width: 100%;
height: 80%;
}
.mini_map {
width: 400px;
height: 200px;
}
#kladr_adr .add-panel {
position: relative;
z-index: 100;
margin: 20px;
}
#kladr_adr .add-panel .wrp {
width: 680px;
margin: 0 auto;
position: relative;
border: 1px solid rgb(104, 104, 104);
background-color: rgb(236, 236, 236);
border-radius: 5px;
padding-top: 15px;
}
#kladr_adr .add-panel__map {
width: 472px;
height: 147px;
float: left;
padding: 10px;
border-radius: 3px;
background: #F2F2F2;
-moz-box-shadow: 0px 1px 0px rgb(255, 255, 255), inset 0px 1px 3px rgba(0, 0, 0, 0.25);
-webkit-box-shadow: 0px 1px 0px rgb(255, 255, 255), inset 0px 1px 3px rgba(0, 0, 0, 0.25);
box-shadow: 0px 1px 0px rgb(255, 255, 255), inset 0px 1px 3px rgba(0, 0, 0, 0.25);
}
#kladr_adr .panel_map {
width: 100%;
height: 250px;
float: left;
margin: 10px 0;
background: #F2F2F2;
-moz-box-shadow: 0px 1px 0px rgb(255, 255, 255), inset 0px 1px 3px rgba(0, 0, 0, 0.25);
-webkit-box-shadow: 0px 1px 0px rgb(255, 255, 255), inset 0px 1px 3px rgba(0, 0, 0, 0.25);
box-shadow: 0px 1px 0px rgb(255, 255, 255), inset 0px 1px 3px rgba(0, 0, 0, 0.25);
}
#kladr_adr #map {
background: #F2F2F2;
background-size: 473px 147px;
cursor: move;
}
#kladr_adr .add-panel__request-ui input[type="text"]
{
width: 240px;
}
#kladr_adr label {
font-size: 100%;
font: inherit;
font-weight: normal;
font-style: normal;
vertical-align: baseline;
font-family: Helvetica, Arial;
}
#kladr_adr .regular__ctrls .ffield {
position: relative;
padding-top: 2px;
padding-bottom: 11px;
overflow: hidden;
width: 100%;
}
#kladr_adr .regular__ctrls .spinner{
position: absolute;
...
JavaScript
(function($){
$(function() {
var container = $('#kladr_adr');
var token = '51dfe5d42fb2b43e3300006e';
var key = '86a2c2a06f1b2451a87d05512cc2c3edfdf41969';
var city = container.find( '[name="city"]' );
var street = container.find( '[name="street"]' );
var building = container.find( '[name="building"]' );
var buildingAdd = container.find( '[name="building-add"]' );
var map = null;
var placemark = null;
var map_created = false;
var geoPoint;
var timestamp = new Date().getTime();
// Формирует подписи в autocomplete
var LabelFormat = function( obj, query ){
var label = '';
var name = obj.name.toLowerCase();
query = query.toLowerCase();
var start = name.indexOf(query);
start = start > 0 ? start : 0;
if(obj.typeShort){
label += '<span class="ac-s2">' + obj.typeShort + '. ' + '</span>';
}
if(query.length < obj.name.length){
label += '<span class="ac-s2">' + obj.name.substr(0, start) + '</span>';
label += '<span class="ac-s">' + obj.name.substr(start, query.length) + '</span>';
label += '<span class="ac-s2">' + obj.name.substr(start+query.length, obj.name.length-query.length-start) + '</span>';
} else {
label += '<span class="ac-s">' + obj.name + '</span>';
}
if(obj.parents){
for(var k = obj.parents.length-1; k>-1; k--){
var parent = obj.parents[k];
if(parent.name){
if(label) label += '<span class="ac-st">, </span>';
label += '<span class="ac-st">' + parent.name + ' ' + parent.typeShort + '.</span>';
}
}
}
...