2016-05-09 8 views
-3

jquery.min.jsをheadタグに含めないと、マップは正常に読み込まれます。 私がそれを含むならば、initMap:そのようなメソッドエラーはありません。 インクルードの順序を逆にする:最初にjqueryをマップし、initMapメソッドがコールバックされず、マップがロードされない。 document.readyでinitMapを呼び出すと、ReferenceError:googleが定義されていません。jqueryを使用しているときにGoogleマップを読み込めません

マップとjqueryの両方を同じページで使用するにはどうすればよいですか。

<!DOCTYPE html> 
<html> 
<head> 
<title>maps test</title> 
<style> 
     html, body { 
     height: 100%; 
     margin: 0; 
     padding: 0; 
     } 
     #map { 
     height: 100%; 
     } 
} 
</style> 

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"/> 
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBEn8E0rL_XdVl2WDLAwgjpM62AM2QoRXI&v=3.exp&sensor=false&libraries=places&callback=initMap" 
    async defer></script>  

</head> 

<body>${message}<br> 
    <input id="location" type="text" value="Enter your location"/><br> 
    <select id="activity" value=" activity"> 
     <option value="volvo">Volvo</option> 
     <option value="saab">Saab</option> 
     <option value="mercedes">Mercedes</option> 
     <option value="audi">Audi</option> 
    </select> 
    <div id="map"></div>  
    <script> 
     var map; 
    var autocomplete; 
    var globalData; 
    $(document).ready(function(){ 
      initMap(); 
    }); 
     function initMap() { 
     map = new google.maps.Map(document.getElementById('map'), { 
      center: {lat: -34.397, lng: 150.644}, 
      zoom: 8 
     }); 
     initialize(); 
    } 
    function initialize() { 
       autocomplete = new google.maps.places.Autocomplete(
        /** @type {HTMLInputElement} */(document.getElementById('location')), 
        { types: ['geocode'] }); 
       google.maps.event.addListener(autocomplete, 'place_changed', loadMarkers); 
     } 
    function loadMarkers(){ 
     var place = autocomplete.getPlace(); 
     var loc = place.geometry.location; 
     var address = place.address_components; 
     $.ajax({ 
      type: "POST", 
      dataType: "json", 
      data: {loc : loc, address : address}, 
      url: '/getmarkers.do', 
      success: function(data) { 
      globalData = data; 
       // get array of latlng 
      // create marker 

      } 
     }); 
    } 
    </script> 

</body> 
</html> 

答えて

0

jQueryの準備が完了した後に負荷google map apiを試してください。

Example here

0

すべてワークスファインあなただけjqueryのスクリプトすなわち</script>の終了タグを逃しました。スクリプトを閉じて、正常に動作します。

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"/></script> 

コードに追加します。

1

あなたはjQueryのを含めるために使用しているスクリプトタグは正しくありません。

これは:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"/> 
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBEn8E0rL_XdVl2WDLAwgjpM62AM2QoRXI&v=3.exp&sensor=false&libraries=places&callback=initMap" 
async defer></script> 

が可能(></script>に変更/>に気づくはずです。

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> 
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBEn8E0rL_XdVl2WDLAwgjpM62AM2QoRXI&v=3.exp&sensor=false&libraries=places&callback=initMap" 
async defer></script> 

スクリプトタグなければなりませんbe <script></script>

関連する問題