/modules/mod_admin/lib/js/admin_edit_location.js

https://code.google.com/p/zotonic/ · JavaScript · 84 lines · 67 code · 17 blank · 0 comment · 5 complexity · 59026bd51c91142f5c87c4a5eeedf90e MD5 · raw file

  1. $(document).ready(function() {
  2. if($('#map_canvas').length) {
  3. googleMapsControl.buildMap({lat: 70.0, lng: -50.0, mapId: 'map_canvas', zoom: 2});
  4. window.marker = false;
  5. var map = googleMapsControl.getMap();
  6. if ($("#location_lat").val() && $("#location_lon").val())
  7. {
  8. addMarker(new google.maps.LatLng($("#location_lat").val(), $("#location_lon").val()));
  9. setTimeout(function(){map.setCenter(window.marker.getPosition());},100);
  10. }
  11. $('#fill-geo').click(function() {
  12. googleMapsControl.getGeoForAddress($('.field-title:first').val(), function(data) {
  13. if(window.marker) {
  14. removeMarker(window.marker);
  15. }
  16. addMarker(data.geometry.location);
  17. fillLatLng(data.geometry.location);
  18. google.maps.event.addListener(window.marker, 'dragend', function(e) {
  19. fillLatLng(window.marker.getPosition());
  20. map.setCenter(window.marker.getPosition());
  21. });
  22. google.maps.event.addListener(window.marker, 'drag', function(e) {
  23. fillLatLng(window.marker.getPosition());
  24. });
  25. });
  26. });
  27. google.maps.event.addListener(map, 'click', function(e) {
  28. if(window.marker) {
  29. removeMarker(window.marker);
  30. }
  31. addMarker(e.latLng);
  32. google.maps.event.addListener(window.marker, 'click', function(e) {
  33. fillLatLng(window.marker.getPosition());
  34. map.setCenter(window.marker.getPosition());
  35. });
  36. clickMarker(window.marker);
  37. google.maps.event.addListener(window.marker, 'dragend', function(e) {
  38. fillLatLng(window.marker.getPosition())
  39. map.setCenter(window.marker.getPosition());
  40. });
  41. google.maps.event.addListener(window.marker, 'drag', function(e) {
  42. fillLatLng(window.marker.getPosition());
  43. });
  44. });
  45. }
  46. function fillLatLng(pos) {
  47. $('#location_lat').val(pos.lat());
  48. $('#location_lng').val(pos.lng());
  49. }
  50. function addMarker(position) {
  51. window.marker = new google.maps.Marker({
  52. position: position,
  53. map: map,
  54. icon: '/lib/images/map_icon.png',
  55. flat: false,
  56. draggable: true
  57. });
  58. google.maps.event.trigger(window.marker, "click");
  59. map.setCenter(window.marker.getPosition());
  60. }
  61. function removeMarker(marker) {
  62. marker.setMap(null);
  63. }
  64. function clickMarker(marker) {
  65. google.maps.event.trigger(marker, "click");
  66. }
  67. });