WordPress.org

Ready to get started?Download WordPress

Forums

Geolocation
jQuery Fix (3 posts)

  1. Creative Slice
    Member
    Posted 3 years ago #

    Version 0.1.1 of Geolocation conflicts with other plugins using jQuery. To fix this we removed the "noConflict" lines and changed the $j to jQuery - noConflict is implicite if you just use jQuery instead of a $ variable. Key was not to search and replace because some variables in his PHP were called $json and got changed to $jQueryson. The script from lines 156 to 325 should be this:

    <script type="text/javascript">
    			jQuery(function() {
    				jQuery(document).ready(function() {
    				    var hasLocation = false;
    					var center = new google.maps.LatLng(0.0,0.0);
    					var postLatitude =  '<?php echo esc_js(get_post_meta($post_id, 'geo_latitude', true)); ?>';
    					var postLongitude =  '<?php echo esc_js(get_post_meta($post_id, 'geo_longitude', true)); ?>';
    					var public = '<?php echo get_post_meta($post_id, 'geo_public', true); ?>';
    					var on = '<?php echo get_post_meta($post_id, 'geo_enabled', true); ?>';
    
    					if(public == '0')
    						jQuery("#geolocation-public").attr('checked', false);
    					else
    						jQuery("#geolocation-public").attr('checked', true);
    
    					if(on == '0')
    						disableGeo();
    					else
    						enableGeo();
    
    					if((postLatitude != '') && (postLongitude != '')) {
    						center = new google.maps.LatLng(postLatitude, postLongitude);
    						hasLocation = true;
    						jQuery("#geolocation-latitude").val(center.lat());
    						jQuery("#geolocation-longitude").val(center.lng());
    						reverseGeocode(center);
    					}
    
    				 	var myOptions = {
    				      'zoom': <?php echo $zoom; ?>,
    				      'center': center,
    				      'mapTypeId': google.maps.MapTypeId.ROADMAP
    				    };
    				    var image = '<?php echo esc_js(esc_url(plugins_url('img/wp_pin.png', __FILE__ ))); ?>';
    				    var shadow = new google.maps.MarkerImage('<?php echo esc_js(esc_url(plugins_url('img/wp_pin_shadow.png', __FILE__ ))); ?>',
    						new google.maps.Size(39, 23),
    						new google.maps.Point(0, 0),
    						new google.maps.Point(12, 25));
    
    				    var map = new google.maps.Map(document.getElementById('geolocation-map'), myOptions);
    					var marker = new google.maps.Marker({
    						position: center,
    						map: map,
    						title:'Post Location'<?php if(get_option('geolocation_wp_pin')) { ?>,
    						icon: image,
    						shadow: shadow
    					<?php } ?>
    					});
    
    					if((!hasLocation) && (google.loader.ClientLocation)) {
    				      center = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
    				      reverseGeocode(center);
    				    }
    				    else if(!hasLocation) {
    				    	map.setZoom(1);
    				    }
    
    					google.maps.event.addListener(map, 'click', function(event) {
    						placeMarker(event.latLng);
    					});
    
    					var currentAddress;
    					var customAddress = false;
    					jQuery("#geolocation-address").click(function(){
    						currentAddress = jQuery(this).val();
    						if(currentAddress != '')
    							jQuery("#geolocation-address").val('');
    					});
    
    					jQuery("#geolocation-load").click(function(){
    						if(jQuery("#geolocation-address").val() != '') {
    							customAddress = true;
    							currentAddress = jQuery("#geolocation-address").val();
    							geocode(currentAddress);
    						}
    					});
    
    					jQuery("#geolocation-address").keyup(function(e) {
    						if(e.keyCode == 13)
    							jQuery("#geolocation-load").click();
    					});
    
    					jQuery("#geolocation-enabled").click(function(){
    						enableGeo();
    					});
    
    					jQuery("#geolocation-disabled").click(function(){
    						disableGeo();
    					});
    
    					function placeMarker(location) {
    						marker.setPosition(location);
    						map.setCenter(location);
    						if((location.lat() != '') && (location.lng() != '')) {
    							jQuery("#geolocation-latitude").val(location.lat());
    							jQuery("#geolocation-longitude").val(location.lng());
    						}
    
    						if(!customAddress)
    							reverseGeocode(location);
    					}
    
    					function geocode(address) {
    						var geocoder = new google.maps.Geocoder();
    					    if (geocoder) {
    							geocoder.geocode({"address": address}, function(results, status) {
    								if (status == google.maps.GeocoderStatus.OK) {
    									placeMarker(results[0].geometry.location);
    									if(!hasLocation) {
    								    	map.setZoom(16);
    								    	hasLocation = true;
    									}
    								}
    							});
    						}
    						jQuery("#geodata").html(latitude + ', ' + longitude);
    					}
    
    					function reverseGeocode(location) {
    						var geocoder = new google.maps.Geocoder();
    					    if (geocoder) {
    							geocoder.geocode({"latLng": location}, function(results, status) {
    							if (status == google.maps.GeocoderStatus.OK) {
    							  if(results[1]) {
    							  	var address = results[1].formatted_address;
    							  	if(address == "")
    							  		address = results[7].formatted_address;
    							  	else {
    									jQuery("#geolocation-address").val(address);
    									placeMarker(location);
    							  	}
    							  }
    							}
    							});
    						}
    					}
    
    					function enableGeo() {
    						jQuery("#geolocation-address").removeAttr('disabled');
    						jQuery("#geolocation-load").removeAttr('disabled');
    						jQuery("#geolocation-map").css('filter', '');
    						jQuery("#geolocation-map").css('opacity', '');
    						jQuery("#geolocation-map").css('-moz-opacity', '');
    						jQuery("#geolocation-public").removeAttr('disabled');
    						jQuery("#geolocation-map").removeAttr('readonly');
    						jQuery("#geolocation-disabled").removeAttr('checked');
    						jQuery("#geolocation-enabled").attr('checked', 'checked');
    
    						if(public == '1')
    							jQuery("#geolocation-public").attr('checked', 'checked');
    					}
    
    					function disableGeo() {
    						jQuery("#geolocation-address").attr('disabled', 'disabled');
    						jQuery("#geolocation-load").attr('disabled', 'disabled');
    						jQuery("#geolocation-map").css('filter', 'alpha(opacity=50)');
    						jQuery("#geolocation-map").css('opacity', '0.5');
    						jQuery("#geolocation-map").css('-moz-opacity', '0.5');
    						jQuery("#geolocation-map").attr('readonly', 'readonly');
    						jQuery("#geolocation-public").attr('disabled', 'disabled');
    
    						jQuery("#geolocation-enabled").removeAttr('checked');
    						jQuery("#geolocation-disabled").attr('checked', 'checked');
    
    						if(public == '1')
    							jQuery("#geolocation-public").attr('checked', 'checked');
    					}
    				});
    			});
    		</script>
  2. ctoynbee
    Member
    Posted 2 years ago #

    Is there a patch for this?

  3. ctoynbee
    Member
    Posted 2 years ago #

    I'm afraid this plugin isn't working under my configuration.
    I'm using wordpress 3.2 and it's conflicting with some other plugins I've got installed.

    In particular it breaks Microkids related posts plugin: http://www.microkid.net/wordpress/related-posts/

    I think it's related to the Jquery conflict stuff above but the fix in the post above isn't working.

    Had anyone else had any problems?

    Thanks,

    Chris.

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic