|
8 | 8 |
|
9 | 9 | // Run this code for every googlemapfield
|
10 | 10 | function initField() {
|
11 |
| - var field = $(this), |
12 |
| - fieldID = field.attr('data-field-id'), // identify its settings |
13 |
| - options = JSON.parse(field.attr('data-settings')), |
14 |
| - centre = new google.maps.LatLng(options.coords[0], options.coords[1]), |
15 |
| - options = { |
| 11 | + var field = $(this); |
| 12 | + if(field.data('gmapfield-inited') === true) { |
| 13 | + return; |
| 14 | + } |
| 15 | + field.data('gmapfield-inited', true); |
| 16 | + var settings = JSON.parse(field.attr('data-settings')), |
| 17 | + centre = new google.maps.LatLng(settings.coords[0], settings.coords[1]), |
| 18 | + mapSettings = { |
16 | 19 | streetViewControl: false,
|
17 |
| - zoom: options.map.zoom * 1, |
| 20 | + zoom: settings.map.zoom * 1, |
18 | 21 | center: centre,
|
19 |
| - mapTypeId: google.maps.MapTypeId[options.map.mapTypeId] |
| 22 | + mapTypeId: google.maps.MapTypeId[settings.map.mapTypeId] |
20 | 23 | },
|
21 | 24 | mapElement = field.find('.googlemapfield-map'),
|
22 |
| - map = new google.maps.Map(mapElement[0], options), |
| 25 | + map = new google.maps.Map(mapElement[0], mapSettings), |
23 | 26 | marker = new google.maps.Marker({
|
24 | 27 | position: map.getCenter(),
|
25 | 28 | map: map,
|
|
36 | 39 | var latCoord = latLng.lat(),
|
37 | 40 | lngCoord = latLng.lng();
|
38 | 41 |
|
39 |
| - options.coords = [latCoord, lngCoord]; |
| 42 | + mapSettings.coords = [latCoord, lngCoord]; |
40 | 43 |
|
41 | 44 | latField.val(latCoord);
|
42 | 45 | lngField.val(lngCoord);
|
|
103 | 106 |
|
104 | 107 | }
|
105 | 108 |
|
| 109 | + $.fn.gmapfield = function() { |
| 110 | + return this.each(function() { |
| 111 | + initField.call(this); |
| 112 | + }); |
| 113 | + } |
| 114 | + |
106 | 115 | function init() {
|
107 |
| - var mapFields = $('.googlemapfield'); |
| 116 | + var mapFields = $('.googlemapfield:visible').gmapfield(); |
108 | 117 | mapFields.each(initField);
|
109 | 118 | }
|
110 | 119 |
|
|
0 commit comments