_map_marker.html.erb 1.7KB

    <script> (function(map) { <% if event.payload[:horizontal_accuracy] && event.payload[:vertical_accuracy] radius = (event.payload[:horizontal_accuracy].to_f + event.payload[:vertical_accuracy].to_f) / 2.0 elsif event.payload[:horizontal_accuracy] radius = event.payload[:horizontal_accuracy].to_f elsif event.payload[:vertical_accuracy] radius = event.payload[:vertical_accuracy].to_f elsif event.payload[:accuracy] radius = event.payload[:accuracy].to_f else radius = 0 end %> var pos = new google.maps.LatLng(<%= event.lat %>, <%= event.lng %>); <% if radius > 0 %> var accuracyCircle = new google.maps.Circle({ strokeColor: '#FF0000', strokeOpacity: 0.8, strokeWeight: 2, fillColor: '#FF0000', fillOpacity: 0.35, map: map, center: pos, radius: <%= radius %> }); <% else %> var marker = new google.maps.Marker({ position: pos, map: map, title: 'Recorded Location' }); <% end %> <% if event.payload[:course] && event.payload[:course].to_f > -1 %> var p1 = new LatLon(pos.lat(), pos.lng()); var p2 = p1.destinationPoint(<%= event.payload[:course].to_f %>, <%= [0.2, (event.payload[:speed] || 1).to_f].max * 0.1 %>); var lineCoordinates = [ pos, new google.maps.LatLng(p2.lat(), p2.lon()) ]; var lineSymbol = { path:google.maps.SymbolPath.FORWARD_CLOSED_ARROW }; var line = new google.maps.Polyline({ path: lineCoordinates, icons: [ { icon: lineSymbol, offset: '100%' } ], map: map }); <% end %> })(map); </script>