Skip to content

Instantly share code, notes, and snippets.

@springmeyer
Forked from wboykinm/geocoder.js
Created July 6, 2011 17:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save springmeyer/1067876 to your computer and use it in GitHub Desktop.
Save springmeyer/1067876 to your computer and use it in GitHub Desktop.
A javascript geocoder piggybacked on the GeoDjango Admin Project
{% block extrastyle %}
<style type="text/css">
#{{ id }}_map { width: {{ map_width }}px; height: {{ map_height }}px; }
#{{ id }}_map .aligned label { float:inherit; }
#{{ id }}_admin_map { position: relative; vertical-align: top; float: {{ LANGUAGE_BIDI|yesno:"right,left" }}; }
{% if not display_wkt %}#{{ id }} { display: none; }{% endif %}
.olControlEditingToolbar .olControlModifyFeatureItemActive {
background-image: url("{{ ADMIN_MEDIA_PREFIX }}img/gis/move_vertex_on.png");
background-repeat: no-repeat;
}
.olControlEditingToolbar .olControlModifyFeatureItemInactive {
background-image: url("{{ ADMIN_MEDIA_PREFIX }}img/gis/move_vertex_off.png");
background-repeat: no-repeat;
}
</style>
<!--[if IE]>
<style type="text/css">
/* This fixes the mouse offset issues in IE. */
#{{ id }}_admin_map { position: static; vertical-align: top; }
/* `font-size: 0` fixes the 1px border between tiles, but borks LayerSwitcher.
Thus, this is disabled until a better fix is found.
#{{ id }}_map { width: {{ map_width }}px; height: {{ map_height }}px; font-size: 0; } */
</style>
<![endif]-->
{% endblock %}
<span id="{{ id }}_admin_map">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"> </script>
<script type="text/javascript">
//<![CDATA[
{% block openlayers %}{% include "gis/admin/openlayers.js" %}{% endblock %}
//]]>
var geoCodeURL = "http://nominatim.openstreetmap.org/search?format=json&q=";
var zoomToPlace = function() {
var address = document.getElementsByName("geocoder")[0].value;
if (!address)
alert("Please type an address or location!");
else {
$.ajax({
type: "POST",
dataType: 'json',
url: geoCodeURL + encodeURI(address),
error: function(jqXHR, textStatus, errorThrown){
alert('error: ' + textStatus + ' ' + errorThrown);
},
success: function (response, textStatus, XMLHttpRequest) {
//console.log(response);
if (!response.length) {
alert('geocoder did not return any records');
} else {
// zoom to first returned
var lon = response[0].lon;
var lat = response[0].lat;
{{ module }}.map.setCenter(
new OpenLayers.LonLat( lon, lat).transform(
new OpenLayers.Projection("EPSG:4326"),
{{ module }}.map.getProjectionObject()
), 13);
}
}
});
};
}
</script>
<p>zoom to address:
<input id="{{ id }}_geocoder" name="geocoder" value="">
<button type="button" onclick="zoomToPlace()" >Geo-code!</button>
</p>
<div id="{{ id }}_map"{% if LANGUAGE_BIDI %} dir="ltr"{% endif %}></div>
<a href="javascript:{{ module }}.clearFeatures()">Delete all Features</a>
{% if display_wkt %}<p> WKT debugging window:</p>{% endif %}
<textarea id="{{ id }}" class="vWKTField required" cols="150" rows="10" name="{{ name }}">{{ wkt }}</textarea>
<script type="text/javascript">{% block init_function %}{{ module }}.init();{% endblock %}</script>
</span>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment