0

나는 루비를 사용 중이며 페이지에지도를 설정하고 있습니다. 나는 초기에 마커를 추가,하지만 내가 원하는 것은 내 @Events을 통해 루프이며, 위도와 경도 필드를 찾아 무언가를이Google지도 및 Ruby에 마커 추가

<% @event.each do |event|%> 
    <script type="text/javascript"> 
    var long = <%= event.longitude %>; 
    var lati = <%= event.latitude %>; 
    addMarker(long, lati); 
    </script> 
<% end %> 

처럼 구글의 API에 익숙하지 않은,하지만 경우 기대했다 할 수 있습니다 가능했습니다.

<script type="text/javascript"> 

    function addMarker(lat, lng) { 
    var marker = new google.maps.Marker({ 
     position: new google.maps.LatLng(lat, lng), 
     map: map 
    }); 
    } 

    <% @events.each do |event| %> 
    addMarker(<%= event.latitude %>, <%= event.longitude %>); 
    <% end %> 

</script> 

은 (이미하지 않는 경우 존재)를 addMarker 함수를 만듭니다 2 개 개의 인수를 취하는 : 나는지도 API를 여기

function initialize() 
{ 
    var lat, lon, map, myOptions; 
    //check if user has geo feature 
    if(navigator.geolocation){ 
    navigator.geolocation.getCurrentPosition(
    //get position 

    function(position){ 
     lat = position.coords.latitude; 
     lon = position.coords.longitude; 

     //init map 
     myOptions = { 
      center: new google.maps.LatLng(lat, lon), 
      zoom: 8, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     map = new google.maps.Map(document.getElementById("map_canvas"), 
      myOptions); 
      var myLatlng = new google.maps.LatLng(46.4352,-80.9455); 
    var marker = new google.maps.Marker({ 
     position: myLatlng, 
     title:"Hello World!" 
    }); 
    // To add the marker to the map, call setMap(); 
    marker.setMap(map); 
    }, 
    // if there was an error 
    function(error){ 
     alert('ouch'); 
    }); 
    } 
    //case the users browser doesn't support geolocations 
    else 
    { 
     alert("Your browser doesn't support geolocations, please consider downloading Google Chrome"); 
    } 
} 

답변

2

구축의 관점에서 무엇을 여기

내 제안이다 - 위도 및 경도 - 기존 마커에 해당 마커를 추가합니다. 그런 다음 Ruby를 사용하여/@event에 대한 하나의 호출을 만들 수 있습니다.

이렇게 더 최적화 할 수있는 방법이 있습니다. 예를 들어, 좌표를 JSON으로 출력하는 별도의 Ruby 스크립트를 가질 수 있으며 런타임시 좌표에로드 할 비동기 HTTP 요청 (AJAX)을 사용할 수 있습니다.이 요청을 사용하여 맵을 채울 수 있습니다.