Vbulletin osm
From OpenStreetMap Wiki
Do you want to give your vbulletin users the options to include a map into a posting like the one to the right? They only have to put this code [map]latitude,longitude[/map] into a message.
Server
Create a directory osm in the root folder of your website.
Put the viewer.php into it.
viewer.php
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <style type="text/css"> #map { width: 280px; height: 180px; border: 0px; padding: 0px; position: absolute; overflow:hidden; border: 1px solid #808080; } body { background-color: #FFFFFF; border: 0px; padding: 8px; margin: 0px; width: 100%; height: 100%; font:Arial, Helvetica, sans-serif; } </style> <script src="http://openlayers.org/api/2.5-rc3/OpenLayers.js"></script> <script type="text/javascript"> <!-- var map; function init(){ //if (document.location.protocol != "file:") { //theArgs = OpenLayers.Util.getArgs(); // } else { // theArgs = {}; // theArgs.center = "0,0"; // theArgs.zoom = "0"; //} var DEFAULT_LAT = 50.85017075668747; var DEFAULT_LON = 5.695231557715086; var DEFAULT_ZOOM_LEVEL = 13; var IDX_LAT = 0; var IDX_LON = 1; var safeArgs = {}; //alert(theArgs.center); safeArgs.centerLat = DEFAULT_LAT; //theArgs.center ? parseFloat(theArgs.center.split(",")[IDX_LAT]) : DEFAULT_LAT; safeArgs.centerLon = DEFAULT_LON; //theArgs.center ? parseFloat(theArgs.center.split(",")[IDX_LON]) : DEFAULT_LON; safeArgs.zoom = 13; // theArgs.zoom ? parseInt(theArgs.zoom) : DEFAULT_ZOOM_LEVEL; //alert(safeArgs.centerLon + " " + safeArgs.centerLat + " " + safeArgs.zoom); map = new OpenLayers.Map('map', { maxExtent: new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508), numZoomLevels: 18, maxResolution: 156543, units: 'm', projection: "EPSG:41001" }); var layerMapnik = new OpenLayers.Layer.TMS( "Mapnik (updated weekly)", "http://tile.openstreetmap.org/mapnik/", {type:'png', getURL: get_osm_url} ); map.addLayers([layerMapnik]); // map.addControl(new OpenLayers.Control.LayerSwitcher()); map.setCenter(lonLatToMercator(new OpenLayers.LonLat(DEFAULT_LON,DEFAULT_LAT)), 16); //map.setCenter(lonLatToMercator(new OpenLayers.LonLat(safeArgs.centerLon, safeArgs.centerLat)), safeArgs.zoom); } function get_osm_url (bounds) { var res = this.map.getResolution(); var x = Math.round ((bounds.left - this.maxExtent.left) / (res * this.tileSize.w)); var y = Math.round ((this.maxExtent.top - bounds.top) / (res * this.tileSize.h)); var z = this.map.getZoom(); var path = z + "/" + x + "/" + y + "." + this.type; var url = this.url; if (url instanceof Array) { url = this.selectUrl(path, url); } return url + path; } function lonLatToMercator(ll) { var lon = ll.lon * 20037508.34 / 180; var lat = Math.log(Math.tan((90 + ll.lat) * Math.PI / 360)) / (Math.PI / 180); lat = lat * 20037508.34 / 180; return new OpenLayers.LonLat(lon, lat); } // --> </script> <title>Openstreetmap Notes - powered by Openlayers</title></head> <body onLoad="init()"> < div id="map"></div> </body> </html>
Remove the spaces before < div>
vbulletin admin
- Goto BB Code Manager
- Add New BB Code
- Subject : map
- Tag : map
- Replacement :
<iframe src="http://www.example.com/osm/viewer.php?controls=mouse¢er={param}" width="300" height="200"<br/>scrolling="no" marginwidth="0" marginheight="0" frameborder="0" style="border: 1px solid #CCCCCC;"></iframe>
- Change the iframe url to the address where your local viewer.php is located.
