Javascript JSON通过Laravel视图传递,只能通过JS脚本中的侦听器函数访问

Javascript JSON通过Laravel视图传递,只能通过JS脚本中的侦听器函数访问,javascript,json,laravel-5,google-maps-api-3,Javascript,Json,Laravel 5,Google Maps Api 3,我在从Laravel项目中的js脚本访问json文件时遇到问题 我正在使用GoogleMapsAPI向地图添加标记,这些标记目前都是硬编码的,因为我似乎只能从侦听器函数中访问json 我完全可以通过placeMarker click listener访问我的json,但是当我尝试使用json值创建“otherPlace”时,找不到这些值。不知道这里发生了什么 很抱歉,可能是noob问题,但我被难住了,找不到任何类似的问题 映射脚本示例: function myMap() { var ma

我在从Laravel项目中的js脚本访问json文件时遇到问题

我正在使用GoogleMapsAPI向地图添加标记,这些标记目前都是硬编码的,因为我似乎只能从侦听器函数中访问json

我完全可以通过placeMarker click listener访问我的json,但是当我尝试使用json值创建“otherPlace”时,找不到这些值。不知道这里发生了什么

很抱歉,可能是noob问题,但我被难住了,找不到任何类似的问题

映射脚本示例:

function myMap() {
    var mapProp= {
        center:new google.maps.LatLng(44.5458062,-83.54936229999996),
        zoom:8,
    };
    var map = new google.maps.Map(document.getElementById("googleMap"),mapProp);

    var place = new google.maps.LatLng(44.453,-83.45773609999998);
    var placeMarker = new google.maps.Marker({position: place});

    var otherPlace = new google.maps.LatLng(json.locations[4].lat,json.locations[4].lng);
    var otherPlaceMarker = new google.maps.Marker({position: otherPlace});

    placeMarker.setMap(map);
    otherPlaceMarker.setMap(map);

    placeMarker.addListener('click', function() {
        map.setZoom(13);
        map.setCenter(placeMarker.getPosition());
        console.log(json.locations[5].address);
        var infowindow = new google.maps.InfoWindow({
            //content: json.locations[5].name + "\r\nAddress: " + json.locations[5].address
        });

        infowindow.setContent(
            "<p>" + json.locations[5].name + "<br />" + json.locations[5].address + "<br/> <a href='#'>Get Directions</a> </p>"
        );
        infowindow.open(map,placeMarker);
    }); 
}
在my locations.blade.php中,我添加了映射脚本并将json传递给javascript

@section('scripts')
<script src="/js/locationsMap.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key={{ env('APP_GOOGLE_MAPS') }}&callback=myMap"></script>
<script> 
    var json = {!! json_encode($json) !!};
</script>
@endsection
@节(“脚本”)
var json={!!json_encode($json)!!};
@端部

尝试从
var json
中删除
var
,如果不起作用,请将函数放在
json={!!json\u encode($json)!!}下面然后重试

谢谢您的回复。因此,如果我将我的整个映射脚本放在json编码下的script标记中,它就会起作用。你知道我如何让它作为一个单独的脚本工作吗?当你的函数在单独的脚本中时,删除
var
有效吗?不,没有,但多亏了你,我才知道。只需要更改脚本的顺序。真不敢相信我以前没试过。非常感谢。是的,我想提出这个建议,但我想如果您将
json
变量设置为全局变量,那么它也可以工作,您只需删除
var
即可:)
@section('scripts')
<script src="/js/locationsMap.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key={{ env('APP_GOOGLE_MAPS') }}&callback=myMap"></script>
<script> 
    var json = {!! json_encode($json) !!};
</script>
@endsection