[EXTENSION] jquery-gmap OO PHP interface to Google Maps with added functionality.
#1
Posted 15 April 2011 - 03:43 AM
#2
Posted 26 April 2011 - 10:38 PM
1) How set icon for markers?
2) How add events, like here(gmap3.net/api/add-markers.html)?
#3
Posted 04 May 2011 - 04:03 AM
Maksold, on 26 April 2011 - 10:38 PM, said:
1) How set icon for markers?
2) How add events, like here(gmap3.net/api/add-markers.html)?
1) Icon url can be passed to the marker options.
2) You can add events to markers, circles, etc simply by passing the event type and JS code to the addEvent or addEventOnce methods.
$marker = new EGmap3Marker(array(
'title' => 'hello',
'icon' => 'http://google-maps-icons.googlecode.com/files/dolphins.png',
));
$marker->address = 'Jacksonville, FL';
$marker->data = 'test data !';
$js = "function(marker, event, data){
var map = $(this).gmap3('get'),
infowindow = $(this).gmap3({action:'get', name:'infowindow'});
if (infowindow){
infowindow.open(map, marker);
infowindow.setContent(data);
} else {
$(this).gmap3({action:'addinfowindow', anchor:marker, options:{content: data}});
}
}";
$marker->addEvent('click', $js);
$marker->centerOnMap();
$gmap->add($marker);
#4
Posted 22 May 2011 - 02:10 AM
How do I get it so that the InfoWindow's aren't open when the Map loads? I want it so that when I hover over a marker the corresponding infowindow pops up.
#5
Posted 22 May 2011 - 09:42 AM
ralz, on 22 May 2011 - 02:10 AM, said:
How do I get it so that the InfoWindow's aren't open when the Map loads? I want it so that when I hover over a marker the corresponding infowindow pops up.
You can use the code in my previous response, and change the event to 'mouseover' instead of 'click'.
A more PHP friendly way could be added in the future if enough people request this option ...
#6
Posted 22 May 2011 - 12:25 PM
I figured that I needed to use 'mouseover' instead of 'click' but that's not the problem. My problem is that when the map loads all the infowindows are already open and I want them to be closed when the map loads. Is there an option/setting that I need to set when I create an infowindow?
Yii::import('ext.jquery-gmap.*');
$gmap = new EGmap3Widget();
$gmap->setSize(400, 400);
$options = new EGmap3MapOptions();
$options->disableDefaultUI = true;
$options->draggable = true;
$options->mapTypeId = EGmap3MapTypeId::ROADMAP;
$options->zoom = 15;
$options->center = array(0,0);
$gmap->setOptions($options);
$infoWindow = new EGmap3InfoWindow(
array('content'=>'New York Baby!',
)
);
$marker = new EGmap3Marker(array(
'title' => 'hello',
'icon' => 'hxxp://google-maps-icons.googlecode.com/files/dolphins.png',
));
$marker->addInfoWindow($infoWindow);
$marker->address = 'New York, NY';
$js = "function(marker, event, data){
var map = $(this).gmap3('get'),
infowindow = $(this).gmap3({action:'get', name:'infowindow'});
infowindow.open(map, marker);}";
$js2 = "function(marker, event, data){
var map = $(this).gmap3('get'),
infowindow = $(this).gmap3({action:'get', name:'infowindow'});
infowindow.close();}";
$marker->addEvent('mouseover', $js);
$marker->addEvent('mouseout', $js2);
$gmap->add($marker);
$gmap->renderMap();
#7
Posted 22 May 2011 - 01:51 PM
The JS only infowindow content is taken from the marker's 'data' property ($marker->data).
Take a look at the JS on http://gmap3.net/api/add-markers.html you can essentially just pass it to the PHP marker object.
HTH
#8
Posted 22 May 2011 - 05:36 PM
Yii::import('ext.jquery-gmap.*');
$gmap = new EGmap3Widget();
$gmap->setSize(300, 400);
$options = new EGmap3MapOptions();
$options->draggable = true;
$options->mapTypeId = EGmap3MapTypeId::ROADMAP;
$options->zoom = 12;
$gmap->setOptions($options);
$marker = new EGmap3Marker(array(
'title' => 'hello',
'icon' => 'hxxp://google-maps-icons.googlecode.com/files/dolphins.png',
));
$marker->address = 'New York, NY';
$marker->data = 'Content of the infowindow';
$js = "function(marker, event, data){
var map = $(this).gmap3('get'),
infowindow = $(this).gmap3({action:'get', name:'infowindow'});
if (infowindow){
infowindow.open(map, marker);
infowindow.setContent(data);
} else {
$(this).gmap3({action:'addinfowindow', anchor:marker, options:{content: data}});
}
}";
$js2 = "function(){
var infowindow = $(this).gmap3({action:'get', name:'infowindow'});
if (infowindow){
infowindow.close();
}
}";
$marker->addEvent('mouseover', $js);
$marker->addEvent('mouseout', $js2);
$marker->centerOnMap();
$gmap->add($marker);
$gmap->renderMap();
#9
Posted 23 May 2011 - 12:00 PM
This has now been fixed, and a new version will be out shortly. Just need to do some more testing of other changes before releasing.
for reference, the following PHP code works properly on the _fixed_ version :
$gmap = new EGmap3Widget();
$gmap->setSize(400, 400);
$options = new EGmap3MapOptions();
$options->disableDefaultUI = true;
$options->draggable = true;
$options->mapTypeId = EGmap3MapTypeId::ROADMAP;
$options->zoom = 15;
$options->center = array(0,0);
$gmap->setOptions($options);
$marker = new EGmap3Marker(array(
'title' => 'hello',
));
$marker->address = 'New York, NY';
$marker->data = 'The Big Apple';
$js = "function(marker, event, data){
var map = $(this).gmap3('get'),
infowindow = $(this).gmap3({action:'get', name:'infowindow'});
if (infowindow){
infowindow.open(map, marker);
infowindow.setContent(data);
} else {
$(this).gmap3({action:'addinfowindow', anchor:marker, options:{content: data}});
}
}";
$js2 = "function(){
var infowindow = $(this).gmap3({action:'get', name:'infowindow'});
if (infowindow){
infowindow.close();
}
}";
$marker->addEvent('mouseover', $js);
$marker->addEvent('mouseout', $js2);
$marker->centerOnMap();
$gmap->add($marker);
$gmap->renderMap();
#10
Posted 26 May 2011 - 09:55 PM
#11
Posted 27 May 2011 - 12:27 AM
#12
Posted 27 May 2011 - 03:25 AM
ralz, on 27 May 2011 - 12:27 AM, said:
That's not good :-( I hope this isn't a major problem with the new version !!
Have you tried clearing out the assets folder when you upgraded the extension ? Because the javascript has been updated also.
#13
Posted 27 May 2011 - 10:39 AM
#15
Posted 28 May 2011 - 12:49 AM
Thanks
#16
Posted 09 June 2011 - 04:08 AM
How can I get jquery-gmap created map object from JavaScript?
I need to trigger resize action after map is already created, but cant find how to get MAP:
google.maps.event.trigger(MAP, "resize");
Thanks
#17
Posted 09 June 2011 - 06:16 AM
tadas, on 09 June 2011 - 04:08 AM, said:
How can I get jquery-gmap created map object from JavaScript?
I need to trigger resize action after map is already created, but cant find how to get MAP:
google.maps.event.trigger(MAP, "resize");
Thanks
I found the answer:
mymap=$('#yw0').gmap3({action:'get', name:'map'});where #yw0 is jquery-gmap map index...
#18
Posted 09 June 2011 - 01:06 PM
tadas, on 09 June 2011 - 06:16 AM, said:
mymap=$('#yw0').gmap3({action:'get', name:'map'});where #yw0 is jquery-gmap map index...
You can also set a specific id when the map is initialized :
$gmap = new EGmap3Widget(); $gmap->id = 'myCustomId';
This is generally better if you need to reference it later as the auto generated id can change.
#20
Posted 10 June 2011 - 12:39 AM
For control options I add 2 styles to the mapTypeIds option like this:
$options->mapTypeId = EGmap3MapTypeId::SATELLITE;
$mapTypeControlOptions = new EGmap3MapTypeControlOptions;
$mapTypeIds = array(EGmap3MapTypeId::ROADMAP, EGmap3MapTypeId::SATELLITE, EGmap3MapTypeId::TERRAIN, 'mystyle1', 'mystyle2');
$mapTypeControlOptions->mapTypeIds = $mapTypeIds;
$mapTypeControlOptions->style = EGmap3MapTypeControlStyle::DROPDOWN_MENU;
$options->mapTypeControlOptions = $mapTypeControlOptions;But cant figure out how to define and apply styles.
How I understand there is no way to do this in jquery-gmap, but maybe I can pas JavaScript something like with events:
$js = "function(marker, event, data){
$('#House_gps_long').val(parseFloat(event.latLng.lng()).toFixed(8));
$('#House_gps_lat').val(parseFloat(event.latLng.lat()).toFixed(8));
}";
$marker->addEvent('dragend', $js);

Help












