Я построил аналогичное решение для этого в Rails. В основном я делаю запрос ajax к методу в моем контроллере rails и возвращаю запись пользователя как JSON, которую можно использовать для настройки нашей карты. Я адаптировал код в соответствии с вашими конкретными потребностями. начало
Давайте путем создания отдельного файла Js под трубопроводом активов:
Место следующие под /app/assets/javascripts/gmap.js
var worldMap = {
init: function(){
// fetch our user record for lat/long
$.ajax({
url: '/user/location',
dataType: 'json',
success: function(data){
worldMap.lat = data.latitude;
worldMap.lng = data.longitude;
worldMap.setupMap();
}
});
},
setupMap: function(){
// we now have user location loaded so build map
worldMap.map = new google.maps.Map(document.getElementById("map"), {
zoom: 3,
center: {
lat: worldMap.lat,
lng: worldMap.lng
}
});
// now lets add autocomplete search
var searchbox = (document.getElementById('search-controls'));
var input = document.getElementById('pac-input');
worldMap.map.controls[ google.maps.ControlPosition.LEFT_TOP ].push(searchbox);
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo('bounds', worldMap.map);
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var place = autocomplete.getPlace();
if (!place.geometry) { return; }
// center map on chosen location
if (place.geometry.viewport) {
worldMap.map.fitBounds(place.geometry.viewport);
} else {
worldMap.map.setCenter(place.geometry.location);
worldMap.map.setZoom(17);
}
});
}
}
Тогда мы можем назвать нашу новую карту установка кода после загрузки DOM, добавьте в /app/assets/javascripts/application.js:
window.onload = function(){
worldMap.init();
}
Теперь мы можем установить наши маршруты, добавьте эту строку в /config/routes.rb:
get 'user/location', :controller => 'users', :action => 'user_location', :as => 'user_latlng'
Затем, наконец, добавить метод к нашим пользователям контроллера /app/controllers/users_controller.rb:
def user_location
@user = User.select(:latitude, :longitude).where(id: current_user.id).limit(1)
render json: @user.first
end
на ваш взгляд, вы хотите иметь окно поиска и отображения DIV, что наш JS ищет:
<div id="search-controls" class="controls">
<input type="text" id="pac-input" placeholder="Search" />
</div>
<div id="map"></div>
Есть две точки, потому что это границы (как коробка). Первым пунктом является юго-западный угол (нижний левый), а второй - северо-восточный (верхний правый). –