Я пытаюсь передать 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'));
}
Столбец адреса в БД:
Обновляю код, проверяю вопрос !. а карты все еще нет? @ Джош
Не могли бы вы добавить код, из которого вы получаете переменную $ address?
Добавил контроллер, обновил вопрос. Кстати, у меня в базе нет lat lng, просто адреса @Josh
Извините за беспокойство, но не могли бы вы добавить поля для записей $ address, которые позволят мне дать вам полный ответ, который должен решить вашу проблему.
Не беспокойтесь, спасибо. То есть вы хотите видеть адреса в БД, я обновил вопрос. Не могли бы вы проверить это, пожалуйста. @ Джош
извините, я имею в виду, не могли бы вы показать столбцы в таблице "allstate", чтобы я знал, какие данные нужно получить из записей?
Я уже добавил изображение столбца в вопрос. Хотя это японский язык :), но адрес @ Josh



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я вижу несколько причин, которые могут вызвать проблему
Попробуй это:
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")}}, или просто скопировать ключ? как в вопросе?
Я бы использовал {{ env('GOOGLE_MAPS_API') }}, так как это позволит вам изменить ключ в будущем и обновлять его везде, где вы его используете. Однако я бы убедился, что вы ограничите его использование, так как он будет общедоступным.
хм, это хорошая идея. но в файле .env нет раздела api карты google. Как его создать? извините за ношу. Нужно ли мне для этого открывать еще один вопрос? :)
просто добавьте GOOGLE_MAPS_API = {google maps api here}, и он автоматически подхватит его, однако лучше сделать это через файлы конфигурации. Подробности смотрите здесь laravel.com/docs/5.7/…
Похоже, вы все делаете правильно, но я думаю, что ваша проблема может заключаться в том, что вы указываете несколько широт и долготы для центра, который, как я считаю, должен быть одним местом для центра карты.