2 rcs_id('$Id: GoogleMaps.php,v 1.3 2005-09-18 16:11:40 rurban Exp $');
4 Copyright 2005 $ThePhpWikiProgrammingTeam
6 This file is part of PhpWiki.
8 PhpWiki is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 PhpWiki is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with PhpWiki; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 * Uses Google Maps as a Map Server
26 * This plugin displays a marker with further infos (when clicking) on given coordinates.
28 * Hint: You need to sign up for a Google Maps API key!
29 * http://www.google.com/apis/maps/signup.html
30 * Then enter the key in config/config.ini under GOOGLE_LICENSE_KEY=
40 * MapType=Map|Satellite|Hybrid
47 * @see plugin/GooglePlugin
48 * http://www.giswiki.de/index.php/Google_Maps_Extensions
49 * http://www.google.com/apis/maps/, http://maps.google.com/
50 * http://libgmail.sourceforge.net/googlemaps.html
53 * Search for keywords (search=)
54 * mult. markers would need a new syntax
55 * directions (from - to)
57 * Automatic route following
59 class WikiPlugin_GoogleMaps
63 return _("GoogleMaps");
66 function getDescription() {
67 return _("Displays a marker with further infos (when clicking) on given coordinates");
70 function getVersion() {
71 return preg_replace("/[Revision: $]/", '',
75 function getDefaultArguments() {
82 'MapType' => 'Hybrid', // Map|Satellite|Hybrid,
83 'SmallMapControl' => false, // large or small
89 function run($dbi, $argstr, &$request, $basepage) {
92 $args = $this->getArgs($argstr, $request);
95 if ($Longitude === '') {
96 return $this->error(fmt("%s parameter missing", "'Longitude'"));
98 if ($Latitude === '') {
99 return $this->error(fmt("%s parameter missing", "'Latitude'"));
102 $maps = JavaScript('',array('src'=>"http://maps.google.com/maps?file=api&v=1&key=" . GOOGLE_LICENSE_KEY));
103 $id = GenerateId("googlemap");
105 case "Satellite": $type = "_SATELLITE_TYPE"; break;
106 case "Map": $type = "_MAP_TYPE"; break;
107 case "Hybrid": $type = "_HYBRID_TYPE"; break;
108 default: return $this->error(sprintf(_("invalid argument %s"), $MapType));
110 $div = HTML::div(array('id'=>$id,'style'=>'width: '.$width.'; height: '.$height));
112 // TODO: Check for multiple markers or polygons
115 // Create a marker whose info window displays the given text
118 include_once("lib/BlockParser.php");
119 $page = $dbi->getPage($request->getArg('pagename'));
120 $rev = $page->getCurrentRevision(false);
121 $markup = $rev->get('markup');
122 $markertext = TransformText($InfoText, $markup, $basepage);
124 $markerjs = JavaScript("
125 function createMarker(point, text) {
126 var marker = new GMarker(point);
127 var html = text + \"<br><br><font size='-1'>[" .
128 _("new window") .
130 GEvent.addListener(marker, \"click\", function() {marker.openInfoWindowHtml(html);});
136 var map = new GMap(document.getElementById('".$id."'));\n" .
138 ? "map.addControl(new GSmallMapControl());\n"
139 : "map.addControl(new GLargeMapControl());\n") . "
140 map.addControl(new GMapTypeControl());
141 map.centerAndZoom(new GPoint(".$Longitude.", ".$Latitude."), ".$ZoomFactor.");
142 map.setMapType(".$type.");" .
145 var point = new GPoint(".$Longitude.",".$Latitude.");
146 var marker = createMarker(point, '".$markertext->asXml()."'); map.addOverlay(marker);"
150 return HTML($markerjs,$maps,$div,$run);
152 return HTML($maps,$div,$run);
156 // $Log: not supported by cvs2svn $
157 // Revision 1.2 2005/09/11 13:29:56 rurban
158 // remove InfoLink, wiki parse Infotext instead
160 // Revision 1.1 2005/09/07 16:53:46 rurban
161 // initial version, idea from http://www.giswiki.de/index.php/Google_Maps_Extensions
165 // (c-file-style: "gnu")
170 // c-hanging-comment-ender-p: nil
171 // indent-tabs-mode: nil