- 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 class that holds static helper functions for Semantic Maps
*
* @file Maps_Utils.php
* @ingroup Maps
*
* @author Robert Buzink
* @author Yaron Koren
* @author Jeroen De Dauw
*/
if( !defined( 'MEDIAWIKI' ) ) {
die( 'Not an entry point.' );
}
class MapsUtils {
public static function getLatLon($param2) {
$coordinates = preg_split("/,/", $param2);
if (count($coordinates) == 2) {
$lat = MapsUtils::convertCoord($coordinates[0]);
$lon = MapsUtils::convertCoord($coordinates[1]);
return array($lat, $lon);
}
return array(null, null);
}
private static function degree2Decimal($deg_coord="") {
$dpos=strpos($deg_coord,'°');
$mpos=strpos($deg_coord,'.');
$spos=strpos($deg_coord,'"');
$mlen=(($mpos-$dpos)-1);
$slen=(($spos-$mpos)-1);
$direction=substr(strrev($deg_coord),0,1);
$degrees=substr($deg_coord,0,$dpos);
$minutes=substr($deg_coord,$dpos+1,$mlen);
$seconds=substr($deg_coord,$mpos+1,$slen);
$seconds=($seconds/60);
$minutes=($minutes+$seconds);
$minutes=($minutes/60);
$decimal=($degrees+$minutes);
//South latitudes and West longitudes need to return a negative result
if (($direction=="S") or ($direction=="W")) {
$decimal *= -1;
}
return $decimal;
}
private static function decDegree2Decimal($deg_coord = "") {
$direction = substr(strrev($deg_coord), 0, 1);
$decimal = floatval($deg_coord);
if (($direction == "S") or ($direction == "W")) {
$decimal *= -1;
}
return $decimal;
}
private static function convertCoord($deg_coord = "") {
if (preg_match('/°/', $deg_coord)) {
if (preg_match('/"/', $deg_coord)) {
return MapsUtils::degree2Decimal($deg_coord);
} else {
return MapsUtils::decDegree2Decimal($deg_coord);
}
}
return $deg_coord;
}
public static function latDecimal2Degree($decimal) {
if ($decimal < 0) {
return abs($decimal) . "° S";
} else {
return $decimal . "° N";
}
}
public static function lonDecimal2Degree($decimal) {
if ($decimal < 0) {
return abs($decimal) . "° W";
} else {
return $decimal . "° E";
}
}
/**
* Add 'px' to a provided width/heigt value
*
* @param unknown_type $value
*/
public static function makePxValue(&$value) {
if (substr($value, strlen($value) - 2) != 'px') $value .= 'px';
}
}
|
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