我想弄清楚如何使用@map_points = @user.places.to_gmaps4rails
将当前位置标记添加到gmaps4rails地图以及来自后端的一些map_points
。我看到了下面的帖子:有没有办法将当前位置标记添加到gmaps4rails?
How do I display the user's location with a marker in gmaps4rails?
,并试图执行JavaScript的存在,但它似乎并不奏效。我将此代码添加到我的JavaScript部分,但由于某些原因,回调似乎并没有被解雇:
= gmaps("map_options" => {"detect_location" => true, "center_on_user" => true, "auto_zoom" => false, "zoom" => 12, "auto_adjust" => true, "markers" => {"data" => @map_points}})
:javascript
Gmaps.map.callback = function() {
Gmaps.map.addMarkers({Lat: Gmaps.map.userLocation.lat(), Lng: Gmaps.map.userLocation.lng(), rich_marker: null, marker_picture:""});
}
编辑: 这里是我现在,但由于某些原因,addListenerOnce
在不触发:
- content_for :scripts do
:javascript
Gmaps.map.callback = function() {
google.maps.event.addListenerOnce(Gmaps.map.getMapObject(),'idle', function(){
navigator.geolocation.getCurrentPosition(add_map_marker,displayError);
});
};
function add_map_marker(position){
var lat = position.coords.latitude;
var lng = position.coords.longitude;
Gmaps.map.addMarkers([{
"lng": lng,
"lat": lat,
"picture": "http://googlemaps.googlermania.com/google_maps_api_v3/en/Google_Maps_Marker.png",
"width": "37",
"height": "34"
}]);
}
function displayError(error){
alert('There is an error displaying location');
}
感谢您的帮助,我将如何在我的'show'视图中实现这个功能? – locoboy
@locoboy回答编辑 – apneadiving
这里的问题是如何获得当前的经纬度?我尝试过'Gmaps.map.userLocation.lat()'纬度,但它不起作用...请参阅上面的代码。我还注意到,当我调用这个回调函数时,来自'= gmaps(blah,:data => @ map_points)'调用的所有点都被清除。 – locoboy