Передача php var в javascript в Laravel

Я пытаюсь передать php $ var в Javascript в скрипте карты Google. У меня есть адресная таблица в БД. И с помощью контроллера я беру его для просмотра, а теперь пытаюсь передать его в Javascript и повторить.

Но возникли проблемы, я думаю, что мой код немного поврежден. Кстати, широты и долготы у меня нет, только адреса.

function initMap(){
        var options = {
            zoom:8,
            center:
            @foreach($address as $addr){
               {!! $addr->address !!} 
            }
            @endforeach
        }

        var map = new google.maps.Map(document.getElementById("map"), options);

        var marker = new google.maps.Marker({
            position:
                @foreach($address as $addr){
                   {!! $addr->address !!}
                }
                @endforeach
            map:map
        });

        var infoWindow = new google.maps.InfoWindow({
            content:'content here'
        });

        marker.addListener('click', function () {
            infoWindow.open(map, marker);
        })

    }

И вызов API карты

<script async defer
       src = "https://maps.googleapis.com/maps/api/js?key=MY-KEY&callback=initMap"></script>

контролер

public function index()
{

    $address = DB::table("allestates")
        ->get();

    return view("home", compact('address'));

}

Столбец адреса в БД:

Передача php var в javascript в Laravel

Похоже, вы все делаете правильно, но я думаю, что ваша проблема может заключаться в том, что вы указываете несколько широт и долготы для центра, который, как я считаю, должен быть одним местом для центра карты.

Josh 04.12.2018 02:50

Обновляю код, проверяю вопрос !. а карты все еще нет? @ Джош

yepsolutely 04.12.2018 03:02

Не могли бы вы добавить код, из которого вы получаете переменную $ address?

Josh 04.12.2018 03:08

Добавил контроллер, обновил вопрос. Кстати, у меня в базе нет lat lng, просто адреса @Josh

yepsolutely 04.12.2018 03:16

Извините за беспокойство, но не могли бы вы добавить поля для записей $ address, которые позволят мне дать вам полный ответ, который должен решить вашу проблему.

Josh 04.12.2018 03:18

Не беспокойтесь, спасибо. То есть вы хотите видеть адреса в БД, я обновил вопрос. Не могли бы вы проверить это, пожалуйста. @ Джош

yepsolutely 04.12.2018 03:23

извините, я имею в виду, не могли бы вы показать столбцы в таблице "allstate", чтобы я знал, какие данные нужно получить из записей?

Josh 04.12.2018 03:29

Я уже добавил изображение столбца в вопрос. Хотя это японский язык :), но адрес @ Josh

yepsolutely 04.12.2018 03:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
8
253
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я вижу несколько причин, которые могут вызвать проблему

Попробуй это:

function initMap(){
    var options = {
        zoom:8,
        center:
           '{!! $address[0]->address !!}'
    }

    var map = new google.maps.Map(document.getElementById("map"), options);

    var marker = new google.maps.Marker({
        position:
            @foreach($address as $addr)
               '{!! $addr->address !!}'
            @endforeach
        map:map
    });

    var infoWindow = new google.maps.InfoWindow({
        content:'content here'
    });

    marker.addListener('click', function () {
        infoWindow.open(map, marker);
    })

}

Итак, во-первых, @foreach (...) не использует { или }.

Во-вторых, вы хотите вывести любую информацию, которая не только числовая, внутри кавычек.

Надеюсь это поможет

Ах, да, это моя ошибка новичка. Большое спасибо, это решило проблему! Кстати последний вопрос. Нужно ли мне использовать ключ API, как этот {{env ("api key")}}, или просто скопировать ключ? как в вопросе?

yepsolutely 04.12.2018 03:50

Я бы использовал {{ env('GOOGLE_MAPS_API') }}, так как это позволит вам изменить ключ в будущем и обновлять его везде, где вы его используете. Однако я бы убедился, что вы ограничите его использование, так как он будет общедоступным.

Josh 04.12.2018 03:51

хм, это хорошая идея. но в файле .env нет раздела api карты google. Как его создать? извините за ношу. Нужно ли мне для этого открывать еще один вопрос? :)

yepsolutely 04.12.2018 04:02

просто добавьте GOOGLE_MAPS_API = {google maps api here}, и он автоматически подхватит его, однако лучше сделать это через файлы конфигурации. Подробности смотрите здесь laravel.com/docs/5.7/…

Josh 04.12.2018 04:05

Другие вопросы по теме