Caution: You are browsing the legacy
1.x part of this website.
1.x part of this website.
This version of symfony is not maintained anymore.
If some of your projects still use this version, consider upgrading.
Table of Contents
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.
Master Symfony2 fundamentals
Be trained by SensioLabs experts (2 to 6 day sessions -- French or English).
trainings.sensiolabs.com
Symfony hosting done right
ServerGrove, outstanding support at the right price for your Symfony hosting needs.
servergrove.com
Discover the SensioLabs Support
Access to the SensioLabs Competency Center for an exclusive and tailor-made support on Symfony
sensiolabs.com
Appendix A - JavaScript code for sfWidgetFormGMapAddress
The following code is the JavaScript needed to make the
sfWidgetFormGMapAddress widget work:
function sfGmapWidgetWidget(options){
// this global attributes
this.lng = null;
this.lat = null;
this.address = null;
this.map = null;
this.geocoder = null;
this.options = options;
this.init();
}
sfGmapWidgetWidget.prototype = new Object();
sfGmapWidgetWidget.prototype.init = function() {
if(!GBrowserIsCompatible())
{
return;
}
// retrieve dom element
this.lng = jQuery("#" + this.options.longitude);
this.lat = jQuery("#" + this.options.latitude);
this.address = jQuery("#" + this.options.address);
this.lookup = jQuery("#" + this.options.lookup);
// create the google geocoder object
this.geocoder = new GClientGeocoder();
// create the map
this.map = new GMap2(jQuery("#" + this.options.map).get(0));
this.map.setCenter(new GLatLng(this.lat.val(), this.lng.val()), 13);
this.map.setUIToDefault();
// cross reference object
this.map.sfGmapWidgetWidget = this;
this.geocoder.sfGmapWidgetWidget = this;
this.lookup.get(0).sfGmapWidgetWidget = this;
// add the default location
var point = new GLatLng(this.lat.val(), this.lng.val());
var marker = new GMarker(point);
this.map.setCenter(point, 15);
this.map.addOverlay(marker);
// bind the move action on the map
GEvent.addListener(this.map, "move", function() {
var center = this.getCenter();
this.sfGmapWidgetWidget.lng.val(center.lng());
this.sfGmapWidgetWidget.lat.val(center.lat());
});
// bind the click action on the map
GEvent.addListener(this.map, "click", function(overlay, latlng) {
if (latlng != null) {
sfGmapWidgetWidget.activeWidget = this.sfGmapWidgetWidget;
this.sfGmapWidgetWidget.geocoder.getLocations(
latlng,
sfGmapWidgetWidget.reverseLookupCallback
);
}
});
// bind the click action on the lookup field
this.lookup.bind('click', function(){
sfGmapWidgetWidget.activeWidget = this.sfGmapWidgetWidget;
this.sfGmapWidgetWidget.geocoder.getLatLng(
this.sfGmapWidgetWidget.address.val(),
sfGmapWidgetWidget.lookupCallback
);
return false;
})
}
sfGmapWidgetWidget.activeWidget = null;
sfGmapWidgetWidget.lookupCallback = function(point)
{
// get the widget and clear the state variable
var widget = sfGmapWidgetWidget.activeWidget;
sfGmapWidgetWidget.activeWidget = null;
if (!point) {
alert("address not found");
return;
}
widget.map.clearOverlays();
widget.map.setCenter(point, 15);
var marker = new GMarker(point);
widget.map.addOverlay(marker);
}
sfGmapWidgetWidget.reverseLookupCallback = function(response)
{
// get the widget and clear the state variable
var widget = sfGmapWidgetWidget.activeWidget;
sfGmapWidgetWidget.activeWidget = null;
widget.map.clearOverlays();
if (!response || response.Status.code != 200) {
alert('no address found');
return;
}
// get information location and init variables
var place = response.Placemark[0];
var point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
var marker = new GMarker(point);
// add marker and center the map
widget.map.setCenter(point, 15);
widget.map.addOverlay(marker);
// update values
widget.address.val(place.address);
widget.lat.val(place.Point.coordinates[1]);
widget.lng.val(place.Point.coordinates[0]);
}





is a trademark of Fabien Potencier. All rights reserved.