HTML-GMap
view release on metacpan or search on metacpan
lib/HTML/GMap/Files.pm view on Meta::CPAN
var latNorth = boundNorthEast.lat();
var lngEast = boundNorthEast.lng();
var latSouth = boundSouthWest.lat();
var lngWest = boundSouthWest.lng();
var lngMid = (lngWest < lngEast) ? lngWest + (lngEast - lngWest) / 2
: lngWest + ((lngEast - (-180)) + (180 - lngWest)) / 2;
if (lngMid > 180) { // Longitude +180 continues with -180
lngMid = -180 + (lngMid - 180); // (lngMid - 180) is overflow over 180'
}
// Longitude +180 continues with -180
tileSideLng = (lngWest < lngEast) ? (lngEast - lngWest) / numberOfHorizontalTiles
: ((lngEast - (-180)) + (180 - lngWest)) / numberOfHorizontalTiles;
tileSideLat = (latNorth - latSouth) / numberOfVerticalTiles;
// document.getElementById("debug").innerHTML = '> latNorth:' + latNorth
// + ' latSouth:' + latSouth
// + '<br>'
// + ' lngWest:' + lngWest
// + ' lngEast:' + lngEast
// + ' tileSideLng:' + tileSideLng
// + '<br/>';
for (var n = 1; n < numberOfHorizontalTiles; n++) {
// Draw longitudes
var lngNth = lngWest + n * tileSideLng;
if (lngNth > 180) { // Longitude +180 continues with -180
lngNth = -180 + (lngNth - 180); // (lngNth - 180) is overflow over 180'
}
var polyline = new GPolyline([
new GLatLng(latNorth, lngNth),
new GLatLng(latSouth, lngNth)
], "#ff8b04", 2);
map.addOverlay(polyline);
map.addOverlay(polyline); // Every other polyline is skipped, a potential bug; observe 8/10/07
}
for (var n = 1; n < numberOfVerticalTiles; n++) {
// Draw latitudes
var latNth = latSouth + n * tileSideLat;
var polyline = new GPolyline([
new GLatLng(latNth, lngWest),
new GLatLng(latNth, lngMid), // A mid point is needed to ensure direction of the line is correct
new GLatLng(latNth, lngEast)
], "#ff8b04", 2);
map.addOverlay(polyline);
map.addOverlay(polyline); // Every other polyline is skipped, a potential bug; observe 8/10/07
}
// document.getElementById("debug").innerHTML = 'zoom:' + map.getZoom();
return 1;
}
// Start refresh (clear overlays and messages)
function startRefresh() {
// Clear existing overlays
map.clearOverlays();
document.getElementById("status").innerHTML = 'Moving ...';
document.getElementById("legend").innerHTML = '';
document.getElementById("legend_message").innerHTML = '';
document.getElementById("details").innerHTML = '';
}
// Refresh display (clear overlays, send an AJAX request, process request)
function doRefresh(event) {
var drawGrid = varStore.drawGrid;
// Clear existing overlays
map.clearOverlays();
document.getElementById("status").innerHTML = "Refreshing ...";
// Construct URL based on coordinates and form values
var requestUrl = constructUrl();
// Query database, pass results on for parsing
GDownloadUrl(requestUrl, processRequest); // No parentheses
// Draw grid
if (drawGrid > 0) {
addLatLngLines();
}
}
// Place markers on the map
function processRequest(data, responseCode) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var lat = parseFloat(markers[i].getAttribute("latitude"));
var lng = parseFloat(markers[i].getAttribute("longitude"));
var iconUrl = markers[i].getAttribute("icon_url");
var iconSize = markers[i].getAttribute("icon_size");
var messagesOnClick = markers[i].getAttribute("messages_on_click");
var detailsOnClick = markers[i].getAttribute("details_on_click");
var legendOnClick = markers[i].getAttribute("legend_on_click");
var point = new GLatLng(lat, lng);
addMarker(point, iconUrl, iconSize, legendOnClick, detailsOnClick, messagesOnClick);
document.getElementById("details").innerHTML = '[Click on an icon on the map for details ...]';
}
var metaData = xml.documentElement.getElementsByTagName("meta_data"); // Only one present
var legendByDefault = metaData[0].getAttribute("legend_by_default");
var detailsByDefault = metaData[0].getAttribute("details_by_default")
var messagesByDefault = metaData[0].getAttribute("messages_by_default")
if (legendByDefault) {
document.getElementById("legend").innerHTML = legendByDefault;
}
if (detailsByDefault) {
document.getElementById("details").innerHTML = detailsByDefault;
}
if (messagesByDefault) {
document.getElementById("messages").innerHTML = messagesByDefault;
}
document.getElementById("status").innerHTML = "Ready";
}
( run in 1.160 second using v1.01-cache-2.11-cpan-13bb782fe5a )