Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

All other Modules /

Discuss all other Modules here.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Googlemaps


Reply


2 Posts   1160 Views

Avatar
mhull

Community Member, 79 Posts

18 December 2008 at 3:51am

Not Strictly a module, but a template that was written a while back and I had working in the last version of silverstripe, is now not working in 2.3. Can anyone shed any light?

class GMapPage extends Page {
static $db = array (
'GoogleMapsScriptURL' => 'Text',
'GoogleMapsAPIKey' => 'Text',
'MapControl' => 'Boolean',
'MapControlSize' => 'VarChar',
'MapTypeControl' => 'Boolean',
'MapSearchControl' => 'Boolean',
'MapMarker' => 'Boolean',
'MapMarkerInfo' => 'Boolean',
'Latitude' => 'Text',
'Longitude' => 'Text',
'Zoom' => 'Int',
'AddressLine1' => 'Text',
'AddressLine2' => 'Text',
'AddressLine3' => 'Text',
'PostCode' => 'Text',
);

static $allowed_children = "none";

function getCMSFields() {
$fields = parent::getCMSFields();

$fields->addFieldToTab('Root.Content.MapConfig', new TextField('GoogleMapsScriptURL'),'Content');
$fields->addFieldToTab('Root.Content.MapConfig', new TextField('GoogleMapsAPIKey'),'Content');
$fields->addFieldToTab(
'Root.Content.MapOptions',
new FieldGroup(
new CheckboxField("MapControl", "Add a Map Control"),
new OptionsetField(
"MapControlSize",
" - Choose type",
array(
"Small" => "Small",
"Large" => "Large",
)
)
),
'Content'
);
$fields->addFieldToTab(
'Root.Content.MapOptions',
new FieldGroup(
new CheckboxField("MapTypeControl", "Add a Map Type Control"),
new CheckboxField("MapSearchControl", "Add a Map Search Control"),
new CheckboxField("MapMarker", "Add a Map Marker"),
new CheckboxField("MapMarkerInfo", "Add an Info Window to the Marker")
),
'Content'
);
$fields->addFieldToTab('Root.Content.MapOptions', new FieldGroup(new NumericField("Zoom", "Enter map zoom value, 1-15", "13")),'Content');
$fields->addFieldToTab(
'Root.Content.MapOptions',
new FieldGroup(
new HeaderField('Co-ordinates',2),
new LiteralField('Blank','<p></h3>Leave blank to use Address</h3></p>'),
new TextField('Latitude','Latitude'),
new TextField('Longitude','Longitude')
),
'Content'
);
$fields->addFieldToTab("Root.Content.Address", new TextField('AddressLine1'),'Content');
$fields->addFieldToTab("Root.Content.Address", new TextField('AddressLine2'),'Content');
$fields->addFieldToTab("Root.Content.Address", new TextField('AddressLine3'),'Content');
$fields->addFieldToTab("Root.Content.Address", new TextField('PostCode'),'Content');

return $fields;
}

}

class GMapPage_Controller extends Page_Controller {
function GetGoogleMapsScript() {
$gmap = DataObject::get_one('GMapPage');

Requirements::javascript($gmap->GoogleMapsScriptURL.$gmap->GoogleMapsAPIKey);
Requirements::javascript("http://www.google.com/uds/api?file=uds.js&amp;v=1.0");
Requirements::javascript("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.js");
Requirements::insertHeadTags(
"<style type='text/css'>
@import url(http://www.google.com/uds/css/gsearch.css);
@import url(http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css);
</style>"
);

$this->address = $gmap->AddressLine1 . ", " . $gmap->AddressLine2;
$gmap->infoWindow = "'" . $this->address . "'";
(is_Null($gmap->Latitude) OR is_Null($gmap->Longitude)) ? ($gmap->Latitude = $gmap->Longitude = "null") : ($gmap->Latitude);
$gmap->MapControlSize = "G" . $gmap->MapControlSize . "MapControl()";

$code .= <<<ScriptCode
<script type="text/javascript">
//<![CDATA[
var map = null;
var geocoder = null;
var checkLatLng = $gmap->Latitude;
var MapControl = $gmap->MapControl;
var MapTypeControl = $gmap->MapTypeControl;
var MapSearchControl = $gmap->MapSearchControl;
var MapMarker = $gmap->MapMarker;
var MapMarkerInfo = $gmap->MapMarkerInfo;

function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("Map"));
if (null==checkLatLng) {
geocoder = new GClientGeocoder();
showAddress("$this->address");
}
else {
var latlng = new GLatLng($gmap->Latitude, $gmap->Longitude);
map.setCenter(latlng, $gmap->Zoom);
}
if (MapControl == "1") {map.addControl(new $gmap->MapControlSize);}
if (MapTypeControl == "1") {map.addControl(new GMapTypeControl());}
if (MapSearchControl == "1") {
// bind a search control to the map, suppress result list
map.addControl(new google.maps.LocalSearch(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20)));
}

}
else {
alert("Your browser is not compatible with the mapping tool.");
}
}
GSearch.setOnLoadCallback(load);

function showAddress(address) {
if (geocoder) {
geocoder.getLatLng(
address,
function(point) {
if (!point) {
alert(address + " not found");
} else {
map.setCenter(point, $gmap->Zoom);
if (MapMarker == "1") {
var marker = new GMarker(point);
map.addOverlay(marker);
}
if (MapMarkerInfo == "1") {
marker.openInfoWindowHtml($gmap->infoWindow);
GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml($gmap->infoWindow);});
}
}
}
);
}
}
//]]>
</script>
ScriptCode;

return $code;
}
}
?>

The error is showing Undefined variable: code and highlighting line 155: ScriptCode;

Any help would be much appreciated

Avatar
mhull

Community Member, 79 Posts

18 December 2008 at 10:41pm

Can anyone offer any suggestions with why this isn't working in 2.3?