- mapsandsemanticmaps0.2.zip
- Maps
- COPYING
- Geocoders
- GoogleMaps
- INSTALL
- Maps.i18n.php
- Maps.php
- Maps_BaseGeocoder.php
- Maps_BaseMap.php
- Maps_Geocoder.php
- Maps_Mapper.php
- Maps_Settings.php
- Maps_Utils.php
- MapUtilityFunctions.js
- OpenLayers
- Maps_OpenLayers.php
- OpenLayerFunctions.js
- OpenLayers
- img
- blank.gif
- cloud-popup-relative.png
- drag-rectangle-off.png
- drag-rectangle-on.png
- east-mini.png
- layer-switcher-maximize.png
- layer-switcher-minimize.png
- marker.png
- marker-blue.png
- marker-gold.png
- marker-green.png
- measuring-stick-off.png
- measuring-stick-on.png
- north-mini.png
- panning-hand-off.png
- panning-hand-on.png
- slider.png
- south-mini.png
- west-mini.png
- zoombar.png
- zoom-minus-mini.png
- zoom-plus-mini.png
- zoom-world-mini.png
- OpenLayers.js
- theme
- default
- framedCloud.css
- google.css
- ie6-style.css
- img
- add_point_off.png
- add_point_on.png
- blank.gif
- close.gif
- drag-rectangle-off.png
- drag-rectangle-on.png
- draw_line_off.png
- draw_line_on.png
- draw_point_off.png
- draw_point_on.png
- draw_polygon_off.png
- draw_polygon_on.png
- editing_tool_bar.png
- move_feature_off.png
- move_feature_on.png
- navigation_history.png
- overview_replacement.gif
- pan_off.png
- pan_on.png
- panning-hand-off.png
- panning-hand-on.png
- pan-panel.png
- pan-panel-NOALPHA.png
- remove_point_off.png
- remove_point_on.png
- ruler.png
- save_features_off.png
- save_features_on.png
- view_next_off.png
- view_next_on.png
- view_previous_off.png
- view_previous_on.png
- zoom-panel.png
- zoom-panel-NOALPHA.png
- style.css
- OSM
- README
- RELEASE-NOTES
- YahooMaps
- SemanticMaps
|
<?php
/**
* A query printer for maps using the Yahoo Maps API
*
* @file SM_YahooMaps.php
* @ingroup SemanticMaps
*
* @author Jeroen De Dauw
*/
if( !defined( 'MEDIAWIKI' ) ) {
die( 'Not an entry point.' );
}
final class SMYahooMaps extends SMMapPrinter {
// TODO: create a class instead of a code horror :D
public function getName() {
wfLoadExtensionMessages('SemanticMaps');
return wfMsg('sm_yahoomaps_printername');
}
/**
* Returns the Yahoo Map Control type for the provided a general map control
* type. When no match is found, the provided control name will be used.
*/
public static function getExtraMapControls($controls, $yahooMapsOnThisPage) {
global $egMapsYMapControls;
$extraMapControls = '';
$panAdded = false; $zoomAdded = false;
if (count($controls) < 1) $controls = $egMapsYMapControls; // In case no controls are provided, use the default
foreach ($controls as $control) { // Loop through the controls, and add the JS needed to add them
switch (strtolower($control)) {
case 'pan' :
if (!$panAdded) {$extraMapControls .= "yahoo_$yahooMapsOnThisPage.addPanControl(); "; $panAdded = true; }
break;
case 'zoom' :
if (!$zoomAdded) {$extraMapControls .= "yahoo_$yahooMapsOnThisPage.addZoomLong(); "; $zoomAdded = true; }
break;
}
}
return $extraMapControls;
}
protected function getResultText($res, $outputmode) {
parent::getResultText($res, $outputmode);
// Go through the array with map parameters and create new variables
// with the name of the key and value of the item.
foreach($this->m_params as $paramName => $paramValue) {
if (empty(${$paramName})) ${$paramName} = $paramValue;
}
$result = "";
global $egYahooMapsOnThisPage, $egMapsYahooMapsZoom;
if (strlen($zoom) < 1) $zoom = $egMapsYahooMapsZoom;
if (empty($egYahooMapsOnThisPage)) {
$egYahooMapsOnThisPage = 0;
MapsYahooMaps::addYMapDependencies($result);
}
$egYahooMapsOnThisPage++;
// Get the Yahoo Maps names for the control and map types
$type = MapsYahooMaps::getYMapType($type);
$extraMapControls = self::getExtraMapControls($controls, $egYahooMapsOnThisPage);
$map_text = "";
if (count($this->m_locations) > 0) {
if (empty($centre)) {
// If the center is not set, it needs to be determined, together with the bounds
// This is done with the getBestZoomAndCenter function of the Y! Maps API
$map_text .= "var ymap_locations_$egYahooMapsOnThisPage = Array();";
foreach ($this->m_locations as $i => $location) {
// Add the markers to the map
list($lat, $lon, $title, $label, $icon) = $location;
$title = str_replace("'", "\'", $title);
$label = str_replace("'", "\'", $label);
$map_text .= "
yahoo_$egYahooMapsOnThisPage.addOverlay(createYMarker(new YGeoPoint($lat, $lon), '$title', '$label'));
ymap_locations_$egYahooMapsOnThisPage.push(new YGeoPoint($lat, $lon));";
}
$map_text .= "var centerAndZoom = yahoo_$egYahooMapsOnThisPage.getBestZoomAndCenter(ymap_locations_$egYahooMapsOnThisPage);
yahoo_$egYahooMapsOnThisPage.drawZoomAndCenter(centerAndZoom.YGeoPoint, centerAndZoom.zoomLevel);";
}
else {
//if ($centre == null) {
// $centre_lat = 0;
// $centre_lon = 0;
//}
//else {
// If the center is set, get the coordinates
list($centre_lat, $centre_lon) = MapsUtils::getLatLon($centre);
//}
foreach ($this->m_locations as $i => $location) {
// Add the markers to the map
list($lat, $lon, $title, $label, $icon) = $location;
$title = str_replace("'", "\'", $title);
$label = str_replace("'", "\'", $label);
$map_text .= "yahoo_$egYahooMapsOnThisPage.addOverlay(createYMarker(new YGeoPoint($lat, $lon), '$title', '$label'));";
}
$map_text .= " yahoo_$egYahooMapsOnThisPage.drawZoomAndCenter(new YGeoPoint($centre_lat, $centre_lon), $zoom);";
}
}
// Disbale the scroll wheel zoom when autozoom is set to off
switch($autozoom) {
case 'no' : case 'off' :
$disbaleKeyControlCode = "yahoo_$egYahooMapsOnThisPage.disableKeyControls();";
break;
default:
$disbaleKeyControlCode = '';
break;
}
$width = $width . 'px';
$height = $height . 'px';
$result .= "
<div id='map-yahoo-$egYahooMapsOnThisPage' style='width: $width; height: $height;'></div>
<script type='text/javascript'>/*<![CDATA[*/
var yahoo_locations_$egYahooMapsOnThisPage = new YGeoPoint($lat, $lon);
var yahoo_$egYahooMapsOnThisPage = new YMap(document.getElementById('map-yahoo-$egYahooMapsOnThisPage'));
yahoo_$egYahooMapsOnThisPage.addTypeControl(); $extraMapControls
yahoo_$egYahooMapsOnThisPage.setMapType($type);
$disbaleKeyControlCode $map_text /*]]>*/</script>";
return array($result, 'noparse' => 'true', 'isHTML' => 'true');
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I am a free and open source software enthusiast and freelance software developer with multiple years of experience in both web and desktop development. Currently my primarily focus is on MediaWiki and Semantic MediaWiki work. I'm in the all time top 10 MediaWiki comitters and am one of the WikiWorks consultants. You can contact me at jeroendedauw at gmail for development jobs and questions related to my work.
More info can be found on my website [0] and my blog [1]. You can also follow me on twitter [2] and identi.ca [3].
[0] http://www.jeroendedauw.com/
[1] http://blog.bn2vs.com/
[2] https://twitter.com/#!/JeroenDeDauw
[3] http://identi.ca/jeroendedauw