Немного не пойму как реализовать, что полученный результат, сохранить только долготу и широту из yandex map. У меня проблема в том что я могу получить данные в js, а передать их в php затруднительно мне и не пойму как это сделать удобнее.
Как я реализовал
Во вьюшке
<?= $form->field($model, 'to')->textInput(['maxlength' => true, 'id' => 'inputYandexMap']) ?>
В контроллере
public function actionCreate()
{
$model = new Courier();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$model->to = YandexMap::widget(['data' => $model->to]);
$model->save()
Yii::$app->session->addFlash('update', 'Доставка была назначена');
return $this->redirect('shipping')
}
return $this->render('create', [
'model' => $model,
]);
}
В виджете YandexMap
class YandexMap extends Widget
{
public $data = null;
public function init()
{
parent::init();
}
public function run()
{
$this->view->registerJsFile('https://api-maps.yandex.ru/2.1/?lang=ru_RU', ['type' => 'text/javascript']);
if ($this->data != null){
$script = <<<JS
let searchControl,
suggestView;
ymaps.ready(init);
function init(){
suggestView = new ymaps.SuggestView('inputYandexMap');
searchControl = new ymaps.control.SearchControl({
options: {
float: 'left',
floatIndex: 100,
noPlacemark: true
}
});
searchControl.search('.$this->data.').then(function () {
let geoOjectsArray = searchControl.getResultsArray();
if(geoOjectsArray.length){
return geoOjectsArray[0].geometry.getCoordinates();
}
});
}
JS;
$this->view->registerJs($script);
}
$this->view->registerJsFile('@web/js/yandexMap.js');
}
}
И в js файле
let searchControl,
suggestView;
ymaps.ready(init);
function init(){
suggestView = new ymaps.SuggestView('inputYandexMap');
searchControl = new ymaps.control.SearchControl({
options: {
float: 'left',
floatIndex: 100,
noPlacemark: true
}
});
$('#inputYandexMap').on('change', function () {
let value = $(this).val();
console.log(value);
searchControl.search(value).then(function () {
let geoOjectsArray = searchControl.getResultsArray();
if(geoOjectsArray.length){
console.log(geoOjectsArray[0].geometry.getCoordinates());
}
});
});
}
Не могу просто понять как реализовать это и скорее код покажется бредом, но примерно подсказку бы мне, куда смотреть и конечно пример чтобы лишних вопросов не задавал.