Использование Rails 3.2.13, ruby 1.9.3p374 и Gmaps4rails 1.5.6.gmaps4rails: Как реализовать кликабельную ссылку на маркер
Я боролся с чем-то, что, поначалу, я думал, должно быть довольно прямолинейно: я хочу отобразить маркер, который при нажатии будет перенаправлен на определенный путь, загружая этот путь в том же окне.
Gmaps4rails не имеет легкого варианта для этого в своем description. Поэтому я провел бесчисленные часы в Интернете, и два лучших хита, которые я нашел здесь, в StackOverflow: this пахнет правильным путем, но this one кажется также полезным.
В конце концов, мой контроллер выглядит следующим образом:
@gmapsjson = current_user.houses.all.to_gmaps4rails do | house, marker |
marker.title house.reference
marker.json({:link => polymorphic_url(house, :routing_type => :path)})
end
Это правильно (я думаю), генерируя следующий в обработанном HTML:
<script src="//maps.google.com/maps/api/js?v=3.8&sensor=false&client=&key=&libraries=geometry&language=&hl=&region=" type="text/javascript"></script>
<script type="text/javascript">
Gmaps.map = new Gmaps4RailsGoogle();
Gmaps.load_map = function() {
Gmaps.map.map_options.auto_zoom = false;
Gmaps.map.map_options.zoom = 3;
Gmaps.map.initialize();
Gmaps.map.markers = [{"title":"First House","link":"/houses/1","lat":-3.4671425,"lng":12.5264373},{"title":"Second House","link":"/houses/2","lat":-4.5543296,"lng":-3.4151647}];
Gmaps.map.create_markers();
Gmaps.map.adjustMapToBounds();
Gmaps.map.callback();
};
Gmaps.oldOnload = window.onload;
window.onload = function() { Gmaps.triggerOldOnload(); Gmaps.loadMaps(); };
</script>
Маркеры на нужных местах. Но теперь, интерпретируя описано на этой first relevant reference, я печатаю прямо на виду, убедившись, что он будет отображаться ниже всех остальных JavaScripts Gmaps4Rails свалки в результате HTML:
<script type="text/javascript">
function redirect_to(url) {
window.location = url
};
Gmaps.callback = function() {
for (var i = 0; i < Gmaps.map.markers.length; ++i) {
google.maps.event.addListener(Gmaps.map.markers[i].google_object, 'click', redirect_to(Gmaps.map.markers[i].link));
}
};
</script>
Но теперь, когда я загрузить страницу, мой Firefox javascript console скажет:
TypeError: Gmaps[load_function_name] is not a function
for (key in Gmaps) {
value = Gmaps[key];
searchLoadIncluded = key.search(/load/);
if (searchLoadIncluded === -1) {
load_function_name = "load_" + key;
_results.push(Gmaps[load_function_name]()); <=== Points to this line
} else {
_results.push(void 0);
}
}
Итак, любые идеи о том, что не так?
Спасибо заранее,
Marco
Вы попробовали этот ответ? http://stackoverflow.com/questions/8608602/make-map-marker-direct-link-onclick-for-gmaps4rails – Benj
Я сделал, да. Это упоминалось как «но это кажется полезным» в первоначальном вопросе. Но спасибо, что обратил мое внимание на это. :) Этот подход дал мне неизвестную «google» в консоли javascript. –