Greetings.
I am trying to modify Shawn Mayzes JQuery Google Maps plugin to support retrieving a "current" latlng property.
Shawn's plugin and examples can be found here: http://www.mayzes.org/googlemaps.jquery.examples.html
The example on which I am focusing is "Map Geocoding Simple" (http://www.mayzes.org/fragments/new/geocode.html). The relevant function within the plugin is:
if ( opts.geocode ) {
geocoder = new GClientGeocoder();
geocoder.getLatLng(opts.geocode, function(center) {
if (!center) {
alert(address + " not found");
}
else {
$.googleMaps.gMap.setCenter(center, opts.depth);
$.googleMaps.latitude = center.x;
$.googleMaps.longitude = center.y;
}
});
}
else {
// Latitude & Longitude Center Point
var center = $.googleMaps.mapLatLong(opts.latitude, opts.longitude);
// Set the center of the Map with the new Center Point and Depth
$.googleMaps.gMap.setCenter(center, opts.depth);
}
Now, what I want to do is retrieve the "center point", the lat / long value of the center point, after passing ad address to the plugin.
So, in my code when I pass an address, thus:
$('#map').googleMaps({
geocode: add
});
I would like some means of of retrieving the lat / long like this:
$('#map').getLatLng();
...or as a callback function within the plugin instantiation (like they do in the JQuery UI Tabs control).
Those would be the "ideal" solutions, but in the meantime, I was willing to "content myself" with a hack. Why not use the Jquery "data" function like this?
if ( opts.geocode ) {
geocoder = new GClientGeocoder();
geocoder.getLatLng(opts.geocode, function(center) {
if (!center) {
alert(address + " not found");
}
else {
alert('center--'+center);
**$(this).data('latlng', center);**
$.googleMaps.gMap.setCenter(center, opts.depth);
$.googleMaps.latitude = center.x;
$.googleMaps.longitude = center.y;
}
});
}
else {
// Latitude & Longitude Center Point
var center = $.googleMaps.mapLatLong(opts.latitude, opts.longitude);
// Set the center of the Map with the new Center Point and Depth
$.googleMaps.gMap.setCenter(center, opts.depth);
}
Then I would be able to retrieve the latlng value by simply referencing:
$('#map').data('latlng');
But, alas, this does not work at all.
Any guidance / hints / solutions to similar problems would be of great assistance.
Shameless
//////////////////////////////////////////////////////// Response to Matchu ////////////////////////////////////////////////////////
Thank you for the idea. Here is what I tried:
$.googleMaps = {
mapsConfiguration: function(opts) {
var ThisMap = this;
// GEOCODE
if ( opts.geocode ) {
geocoder = new GClientGeocoder();
geocoder.getLatLng(opts.geocode, function(center) {
if (!center) {
alert(address + " not found");
}
else {
alert('center--'+center);
ThisMap.data('latlng', center);
$.googleMaps.gMap.setCenter(center, opts.depth);...
The "var ThisMap = this" is on Line 3 of the plugin, which seems pretty "up high" to me :)
I try to retrieve the "latlng" using:
var map = $('#map').googleMaps({
geocode: add
});
alert('latlng--'+map.data('latlng'));
I know that what needs to happen here is possible because I have used similar usage pattersn with other plugins. Unfortunately, those plugins seem to be pretty "advanced" and I have not seen an example of storing and retrieving current property values in any of the simple JQuery Plugin tutorials. Has anyone else?