web-dev-qa-db-ja.com

Google Maps API:markerwithlabel.js-キャッチされていないReferenceError:googleが定義されていません

ドキュメントと例を読みましたが、markerwithlabel.jsファイルをインクルードしようとすると、初期化エラー( "Uncaught ReferenceError:google is not defined" + Uncaught ReferenceError:homeLatLng is not defined)を解決できないようです。 「マップが完成する前に何かをロードすることはできません」という問題。

私に何ができる?

試したこと:

<head>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=mykey&callback=initMap"></script>
<script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerwithlabel/src/markerwithlabel.js"></script>
<script type="text/javascript"> 
    var map;
    function initMap() {

            map = new google.maps.Map(document.getElementById('map'), {
                zoom: 14,
                center: {lat: 52.5200066, lng: 13.404954}
            });

            var marker1 = new MarkerWithLabel({
                   position: homeLatLng,
                   draggable: true,
                   raiseOnDrag: true,
                   map: map,
                   labelContent: "$425K",
                   labelAnchor: new google.maps.Point(22, 0),
                   labelClass: "labels", // the CSS class for the label
                   labelStyle: {opacity: 0.75}
            });
    }
</script>

..

11
maxxyoo

markwithlabel.jsには、すでにロードされているマップ(API)が必要です。

(コードで行うように)maps-APIを非同期でロードする場合、markerwithlabel.jsがロードされるときにmaps-APIがロードされる保証はありません。

解決策:maps-APIを同期的にロードする

<script src="https://maps.googleapis.com/maps/api/js?v=3&key=mykey"></script>
<script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerwithlabel/src/markerwithlabel.js"></script>
<script type="text/javascript"> 
    var map;
    function initMap() {

            map = new google.maps.Map(document.getElementById('map'), {
                zoom: 14,
                center: {lat: 52.5200066, lng: 13.404954}
            });

            var marker1 = new MarkerWithLabel({
                   position: homeLatLng,
                   draggable: true,
                   raiseOnDrag: true,
                   map: map,
                   labelContent: "$425K",
                   labelAnchor: new google.maps.Point(22, 0),
                   labelClass: "labels", // the CSS class for the label
                   labelStyle: {opacity: 0.75}
            });
    }
google.maps.event.addDomListener(window, 'load', initMap);
</script>
17
Dr.Molle