在我的rails项目中,我在Google地图中的一些代码是:
function initialize_google_maps() {
var currentlatlng = new google.maps.LatLng(<%= @user.lat %>, <%= @user.lng %>);
var zoom = <%= @kms_range %> > 9 ? 9 : 10;
var myOptions = {
zoom: zoom,
等等...
问题是那些:
(<%= @user.lat %>, <%= @user.lng %>);
我如何转换&lt;%= @ user.lat%&gt;和&lt;%= @ user.lng%&gt;变成一个字符串,所以javascript或jquery可以理解吗?
出于ajax的原因,我不能将此代码放在脚本标记之间。我需要将它变成一个jquery函数,分配值&lt;%= @ user.lat%&gt;和&lt;%= @ user.lng%&gt;进入jquery可以理解的东西。
<script type="text/javascript">
var map;
var markers = [];
function initialize_google_maps() {
var currentlatlng = new google.maps.LatLng(<%= @user.lat %>, <%= @user.lng %>);
var zoom = <%= @kms_range %> > 9 ? 9 : 10;
var myOptions = {
zoom: zoom,
center: currentlatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP, // ROADMAP, SATELLITE, HYBRID
streetViewControl: false
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = new google.maps.Marker({map: map, position: currentlatlng, icon:{oppacity:0}});
map.setCenter(currentlatlng);
map.setZoom(zoom);
var circle = new google.maps.Circle({
map: map,
fillOpacity: 0,
strokeWeight: 2,
strokeOpacity: 0.7,
radius: <%= @kms_range %>*1000,
});
circle.bindTo('center', marker, 'position');
}
function show_markers() {
if (markers)
for(i in markers) {
markers[i].setMap(map);
}
}
function add_marker(location) {
marker = new google.maps.Marker({
position: location,
map: map
});
markers.push(marker);
// markers.setVisible(false);
}
function initialize_markers() {
<% (@reviews || []).each do |r| %>
<% next unless r.lat && r.lng %>
position = new google.maps.LatLng(<%= r.lat %>, <%= r.lng %>);
add_marker(position);
<% end %>
}
$(function() {
initialize_google_maps();
initialize_markers();
show_markers();
});
</script>
答案 0 :(得分:1)
如果它们是double或int,你不需要,你可以只是逐字渲染它们。如果它确实是一个字符串,你需要一个js中的字符串,只需在其中加上引号:
var currentlatlng = new google.maps.LatLng("<%= @user.lat %>", "<%= @user.lng %>");
编辑:根据评论:
var map_latitude = <%= at_user.lat %>;
var map_longitude = <%= at_user.lng %>;