2017-06-15 13 views
1

私はアプリケーションで作業していますが、ユーザは自分のプロフィールで訪問先の都市や国をリストとして表示でき、これらの場所も地図上にマークする必要があります。私はGoogle Maps APIを利用しようとしましたが、私が設定した場所に関係なく、地図上にマーカーは表示されません。私は自分のプロジェクトにJSPとSpringフレームワークを使用しています。 エラーを見つけるのを手伝ってくれてありがとうと思います!Googleマップ上に複数のマーカーがあるJSP

ユーザページのコードです:すべての

<%@page session="false"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<html> 
<head> 
<title>${title}</title> 
    <jsp:include page="header.jsp"/> 
    <script 
     src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&key=AIzaSyDxS8WSvbLkzJPrH2TVqfVspGs4QgSLWy8"> 
    </script> 
    <script> 
    var map; 
    function initialize() { 
     var mapOptions = { 
     zoom: 1, 
     center: new google.maps.LatLng(48.295637, 26.6949621) 
     }; 

     // Display a map on the page 
     map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions); 

     // Multiple Markers 
     var markers = [ 
      ['Kyiv, Ukraine', 50.401699,30.252508], 
      ['Lviv, Ukraine', 49.8326679,23.9421957] 
     ]; 


     // Loop through our array of markers & place each one on the map 
     for(i = 0; i < markers.length; i++) { 
      var position = new google.maps.LatLng(markers[i][1], markers[i][2]); 
      bounds.extend(position); 
      marker = new google.maps.Marker({ 
       position: position, 
       map: map, 
       title: markers[i][0] 
      }); 

      // Automatically center the map fitting all markers on the screen 
      map.fitBounds(bounds); 
     } 

    // Override our map zoom level once our fitBounds function runs (Make sure it only runs once) 
     var boundsListener = google.maps.event.addListener((map), 'bounds_changed', function(event) { 
      this.setZoom(14); 
      google.maps.event.removeListener(boundsListener); 
     }); 
    } 

    google.maps.event.addDomListener(window, 'load', initialize); 
    </script> 
</head> 
<body> 
    <jsp:include page="_menu.jsp" /> 

    <h1><c:forEach items="${nsur}" var="item" varStatus="loop"> 
     ${item} 
     ${loop.last ? '' : ''} 
    </c:forEach></h1> 
    <p>${summary} <br> from ${residence}</p> 

    <h2> 
     <c:forEach items="${countriesCount}" var="item"> 
      ${item} 
     </c:forEach> visited countries: 
    </h2> 

    <c:forEach items="${countries}" var="item" varStatus="loop"> 
     ${item} 
     ${loop.last ? '' : ', '} 
    </c:forEach> 

    <h2> 
    <c:forEach items="${citiesCount}" var="item"> 
     ${item} 
    </c:forEach> visited cities: 
     </h2> 

    <c:forEach items="${cities}" var="item" varStatus="loop"> 
     ${item} 
     ${loop.last ? '' : ', '} 
    </c:forEach> 

    <br/><br/><br/> 
    <div id="map-canvas" style="height:300px; width:500px"></div> 
    <jsp:include page="footer.jsp"/> 
</body> 
</html> 

答えて

2

まず、forループの前にあなたのbounds変数を定義します。

var bounds = new google.maps.LatLngBounds(); 

、そうでなければ、boundsListenerでthis.setZoom(14)を削除するか、または変更を、マーカーは」上がりませんズーム範囲のために初期化画面に表示されません。

var boundsListener = google.maps.event.addListener((map), 'bounds_changed', function(event) { 
    //this.setZoom(14) 
    google.maps.event.removeListener(boundsListener); 
}); 
+0

ありがとうございます!あなたは本当に助けてくれました – Cassie

+0

@Cassieよろしくお願いします。 –

関連する問題