http://mootools.net/shell/YZKUs/1/

You can add external resources in the accordion.

The console is throwing two parse errors with your code though.

On Jan 13, 2010, at 1:29 PM, machadoug wrote:

Dear Ryan,

I've tried to post there. I posted the HTML and javascript (signed up
for a new GMaps API key for mootools.net), but couldn't make it work.
http://mootools.net/shell/YZKUs/



On Jan 13, 4:22 pm, Ryan Florence <[email protected]> wrote:
Best way to get help is to post a test case onhttp://mooshell.net,
then we can not only look at the code, but also execute it.

On Jan 13, 2010, at 11:18 AM, machadoug wrote:

Greetings,

I'm new to the group and I looked for posting guidelines but found
none;

I'm trying to create a class to handle Google Maps.

My problem:
The operation seems to be aborted whenever the showAddress method
calls this.loadMap();

The code is part of a Joomla component that I'm developing, therefore
I created a small page with the code:
http://ideal.fok.com.br/gmaps/

I don't know if it makes easier to post the code, it is bellow anyway:
var CEGMaps = new Class({
   options: {
           maplayer:               'map_canvas',
           latInput:               'lat',
           lngInput:               'lng',
           zoomInput:      'zoom',
           address:                'undefined',
           language: {
                   txtErrorAddress:        'Address ## not found',
                   txtMapAddress:          'Address: <br /> ##'
                   }
 },

   initialize: function(options){
           if(!GBrowserIsCompatible()) return false;
           this.eventsloaded       = 0;
           this.setOptions(options);
           this.geocoder   = new GClientGeocoder();
           this.maplayer   = $(this.options.maplayer);
           this.lat                = $(this.options.latInput).value;
           this.lng                = $(this.options.lngInput).value;
this.zoom = $ (this.options.zoomInput).value;
           this.address    = this.options.address;

           this.map                = new GMap2(this.maplayer);
           //      this.map.addControl(new GSmallMapControl());
           //this.map.addControl(new GMapTypeControl());

           this.point      = new GLatLng(this.lat, this.lng);
this.marker = new GMarker(this.point, {draggable: true});

if( (this.lat != 0 && this.lng != 0) || this.address ==
'undefined' ){
                   this.loadMap();
           }else if(this.address != 'undefined'){
                   this.showAddress(this.address);
           }else{
                   this.loadMap();
           }
           this.map.addOverlay(this.marker);
   },
   showAddress: function(address){
           this.address    = address;

           this.geocoder.getLatLng(
           address,
           function(point){
                   if(point){
                           this.point      = point;
                           this.loadMap();
                   }
                   else{
alert(this.options.language.txtErrorAddress.replace(/##/,
address) );
                   }
           }
   )},

   loadMap: function(){
           alert(this.point); //testing;
           this.map.setCenter(this.point);
           this.map.setZoom(this.zoom.toInt());
           this.map.setUIToDefault();
           this.marker.setLatLng(this.point);
           this.marker.openInfoWindowHtml
(this.options.language.txtMapAddress.replace(/##/, this.address) );
           this.loadEventListeners();
           this.saveCoordinates();
           this.loadEventListeners();
   },

   saveCoordinates: function() {
           var coordinates = this.marker.getLatLng();
coordinates = coordinates.toString().replace('(','').replace
(')','');
           coordinates             = coordinates.split(',');
$(this.options.latInput).setProperty('value', trim(coordinates[0])); $(this.options.lngInput).setProperty('value', trim(coordinates
[1]));
$(this.options.zoomInput).setProperty('value', this.map.getZoom());
   },

   loadEventListeners: function(){
           if(this.eventsloaded > 0){ return false;}
           this.eventsloaded++;
           GEvent.addListener(this.map, 'mouseout', function() {
// If I use "this" instead of "document.CEMaper" it shows
"this.saveCoordinates() is not a function" error
                   document.CEMaper.saveCoordinates();

           });
           GEvent.addListener(this.marker, 'dragstart', function() {
                   document.CEMaper.map.closeInfoWindow();
           });

           GEvent.addListener(this.marker, 'dragend', function() {
                   document.CEMaper.marker.openInfoWindowHtml
(document.CEMaper.options.language.txtMapAddress.replace(/##/,
this.address));
           });
   }
}
);
CEGMaps.implement(new Options);

The class can also be found here:
http://ideal.fok.com.br/components/com_contact_enhanced/assets/js/gma ...

Any help is highly appreciated.

Kind regards,

Douglas

Reply via email to