Commit 98c68e5f71cc420ea2cad4225f045e748c8a388c

Authored by Braulio Bhavamitra
Committed by Daniela Feitosa
1 parent e62c8255

Improve usability on profile edit location

Showing 1 changed file with 50 additions and 64 deletions   Show diff stats
app/views/maps/_google_map.js.erb
... ... @@ -9,9 +9,9 @@ var previousCenter;
9 9 function getAddress(latlng) {
10 10 $('location-fields').addClassName("loading");
11 11  
12   - if (latlng != null) {
  12 + if (latlng != null) {
13 13 geocoder.geocode( {'latLng': latlng}, showAddress);
14   - }
  14 + }
15 15 }
16 16  
17 17 function codeAddress() {
... ... @@ -21,7 +21,7 @@ function codeAddress() {
21 21 var address = $('profile_data_address').value + "-" + $('profile_data_zip_code').value + "," + $('profile_data_city').value+ "-" + $('profile_data_state').value + "," + country_option;
22 22  
23 23 if (geocoder) {
24   - geocoder.geocode( { 'address': address}, function(results, status) {
  24 + geocoder.geocode({ 'address': address}, function(results, status) {
25 25 if (status == google.maps.GeocoderStatus.OK) {
26 26 map.setCenter(results[0].geometry.location);
27 27 marker.setPosition(results[0].geometry.location);
... ... @@ -78,66 +78,65 @@ function getAddressData() {
78 78 }
79 79  
80 80 function showAddress(results, status) {
81   -
82 81 if (status == google.maps.GeocoderStatus.OK) {
83   - map.setCenter(results[0].geometry.location);
84 82 updateFields(results[0]);
85   -
  83 + map.setCenter(marker.getPosition());
86 84 } else {
87 85 alert("<%=_("Address not found, reason:")%>" + translate_status(status));
88 86 }
89   -
90 87 }
91 88  
92 89 function updateFields(place) {
  90 + $('location-fields').removeClassName("loading");
  91 +
93 92 var position = marker.getPosition();
94 93 $('profile_data_lat').value = position.lat();
95 94 $('profile_data_lng').value = position.lng();
96   - $('location-fields').removeClassName("loading");
97 95  
98 96 form = jQuery('#location-form')[0];
99 97 form.lat = marker.getPosition().lat();
100 98 form.lng = marker.getPosition().lng();
101 99  
102 100 var components_len = place.address_components.size();
  101 + if (components_len < 2)
  102 + return;
103 103  
104   - if(components_len < 2)
105   - {
106   - return false;
107   - }
108   -
109   - var components = place.address_components;
110 104 var address = "";
111 105 var zip_code = "";
112 106 var city = "";
113 107 var state = "";
114 108 var country_code = "";
115   - var i = 0;
116   -
117   - for( i =0 ; i < components_len; i ++)
118   - {
119   -
120   - if (components[i].types[0] == 'country')
121   - country_code = components[i].short_name;
122   - else if (components[i].types[0] == 'administrative_area_level_1')
123   - state = components[i].long_name;
124   - else if (components[i].types[0] == 'locality')
125   - city = components[i].long_name;
126   - else if (components[i].types[0] == 'sublocality')
127   - address = components[i].long_name + "-" + address;
128   - else if (components[i].types[0] == "route")
129   - address = components[i].long_name + address;
130   - else if (components[i].types[0] == "street_number")
131   - address = address + "," + components[i].short_name ;
132   - else if (components[i].types[0] == 'postal_code')
133   - zip_code = components[i].short_name;
  109 +
  110 + var i;
  111 + for(i=0; i < components_len; i++) {
  112 + type = place.address_components[i].types[0];
  113 + value = place.address_components[i];
  114 + if (type == 'country')
  115 + country_code = value.short_name;
  116 + else if (type == 'administrative_area_level_1')
  117 + state = value.long_name;
  118 + else if (type == 'locality')
  119 + city = value.long_name;
  120 + else if (type == 'sublocality')
  121 + address = value.long_name + "-" + address;
  122 + else if (type == "route")
  123 + address = value.long_name + address;
  124 + else if (type == "street_number")
  125 + address = address + "," + value.short_name;
  126 + else if (type == 'postal_code')
  127 + zip_code = value.short_name;
134 128 }
135 129  
136   - $('profile_data_country').value = country_code;
137   - $('profile_data_state').value = state;
138   - $('profile_data_address').value = address;
139   - $('profile_data_city').value = city;
140   - $('profile_data_zip_code').value = zip_code;
  130 + if (country_code)
  131 + $('profile_data_country').value = country_code;
  132 + if (state)
  133 + $('profile_data_state').value = state;
  134 + if (address)
  135 + $('profile_data_address').value = address;
  136 + if (city)
  137 + $('profile_data_city').value = city;
  138 + if (zip_code)
  139 + $('profile_data_zip_code').value = zip_code;
141 140 }
142 141  
143 142  
... ... @@ -157,29 +156,25 @@ function initialize_map() {
157 156 var myOptions = {
158 157 zoom: 8,
159 158 center: latlng,
160   - mapTypeId: google.maps.MapTypeId.ROADMAP
  159 + mapTypeId: google.maps.MapTypeId.HYBRID
161 160 }
162 161  
163 162 center = latlng;
164 163  
165 164 map = new google.maps.Map(document.getElementById("location-map"), myOptions);
166 165  
167   - continueLoadMapV3()
168   -}
169   -
170   -function continueLoadMapV3() {
171   -
172   - marker = new google.maps.Marker({
173   - position: center,
174   - map: map,
175   - draggable: true
176   - });
  166 + marker = new google.maps.Marker({
  167 + position: center,
  168 + map: map,
  169 + draggable: true
  170 + });
177 171  
178   - google.maps.event.addListener(marker, "dragend", function() {
179   - move = false;
180   - getAddress(marker.getPosition());
181   - enable_save();
182   - });
  172 + google.maps.event.addListener(marker, "dragend", function() {
  173 + move = false;
  174 + getAddress(marker.getPosition());
  175 + map.setCenter(marker.getPosition());
  176 + enable_save();
  177 + });
183 178  
184 179 }
185 180  
... ... @@ -188,7 +183,7 @@ window.onload = initialize_map;
188 183 var delay_autocomplete = 500;
189 184  
190 185 jQuery.noConflict();
191   -jQuery(document).ready(function (){
  186 +jQuery(document).ready(function () {
192 187  
193 188 jQuery.widget( "custom.catcomplete",jQuery.ui.autocomplete, {
194 189 _renderMenu: function( ul, items ) {
... ... @@ -204,7 +199,6 @@ jQuery(document).ready(function (){
204 199 }
205 200 });
206 201  
207   -
208 202 jQuery("#profile_data_city").catcomplete({
209 203 source: "../maps/search_city",
210 204 minLength: 3,
... ... @@ -219,21 +213,13 @@ jQuery(document).ready(function (){
219 213 });
220 214  
221 215 jQuery("#profile_data_city").keyup(function(){
222   -
223 216 disable_save();
224   -
225 217 });
226   -
227 218 jQuery("#profile_data_state").keyup(function(){
228   -
229 219 disable_save();
230   -
231 220 });
232   -
233 221 jQuery("#profile_data_country").change(function(){
234   -
235 222 disable_save();
236   -
237 223 });
238 224  
239 225 });
... ...