var map
var marker_start
var marker_ziel
var directions
var geocoder
var polyline
var distance
var duration
var bounds
var startLatLng
var zielLatLng
var error
var oldHtml
var request
window.onload = function() {
breakout_of_frame()
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("api"))
map.disableDragging()
map.disableInfoWindow()
map.disableDoubleClickZoom()
map.disableContinuousZoom()
map.disableGoogleBar()
map.disableScrollWheelZoom()
map.removeMapType(G_SATELLITE_MAP)
map.removeMapType(G_HYBRID_MAP)
map.addMapType(G_NORMAL_MAP)
map.addMapType(G_PHYSICAL_MAP)
map.addControl(new GMapTypeControl())
map.addControl(new GLargeMapControl())
map.setCenter(new GLatLng(50.7, 9.9), 5)
map.enableDragging()
map.enableDoubleClickZoom()
map.enableContinuousZoom()
map.enableScrollWheelZoom()
map.setCenter(new GLatLng(51.3316301346,6.55928349355), 12)
GEvent.addListener(map, "click", click)
geocoder = new GClientGeocoder();
}
}
function breakout_of_frame()
{
if (top.location != location) {
top.location.href = document.location.href
}
}
function showError(elemid, text) {
error = true
var elem = document.getElementById(elemid)
elem.style.color = '#ff0000';
document.getElementById(elemid+'_error').innerHTML = text
document.getElementById(elemid+'_error').style.display = "block"
document.getElementById(elemid+'_error').style.visibility = "visible"
document.getElementById('preis').innerHTML = oldHtml
document.getElementById('preis').style.textAlign = 'left'
}
function resetError() {
error = false
document.getElementById('start_error').innerHTML = ''
document.getElementById('start_error').style.display = "none"
document.getElementById('ziel_error').innerHTML = ''
document.getElementById('ziel_error').style.display = "none"
try {
document.getElementById('start_error').style.visibility = "collapse"
document.getElementById('ziel_error').style.visibility = "collapse"
} catch(e) {/* f*ckin internet explorer */}
}
function getIcon(start) {
icon = new GIcon(G_DEFAULT_ICON)
icon.image = start ? "http://www.google.com/mapfiles/dd-start.png" : "http://www.google.com/mapfiles/dd-end.png"
return icon
}
function click(marker, point) {
if(marker || !point) return false
if(!marker_start && (document.getElementById('start').value == 'Adresse hier oder Karte benutzen' || 'Adresse wurde nicht gefunden!')) {
marker_start = new GMarker(point, {'icon':getIcon(true), 'title':'Startpunkt', 'draggable':true})
GEvent.addListener(marker_start, 'dragend', dragendStart)
map.addOverlay(marker_start)
geocoder.getLocations(point, getStartAddress);
}
else if(!marker_ziel && (document.getElementById('ziel').value == 'Adresse hier oder Karte benutzen' || 'Adresse wurde nicht gefunden!')) {
marker_ziel = new GMarker(point, {'icon':getIcon(false), 'title':'Zielpunkt', 'draggable':true})
GEvent.addListener(marker_ziel, 'dragend', dragendZiel)
map.addOverlay(marker_ziel)
geocoder.getLocations(point, getZielAddress);
}
}
function getStartAddress(response) {
if (!response || response.Status.code != 200) {
document.getElementById("start").value = "Adresse wurde nicht gefunden!"
document.getElementById("start").style.color = "#ff0000"
document.getElementById('preis').innerHTML = oldHtml
document.getElementById('preis').style.textAlign = 'left'
map.removeOverlay(marker_start)
marker_start = false
}
else {
place = response.Placemark[0]
address = place.address
address = address.replace(/^(.{5,}\d\d\d\d\d).*$/i, "$1")
document.getElementById("start").value = address
document.getElementById("start").style.color = "#000000"
}
}
function getZielAddress(response) {
if (!response || response.Status.code != 200) {
document.getElementById("ziel").value = "Adresse wurde nicht gefunden!"
document.getElementById("ziel").style.color = "#ff0000"
document.getElementById('preis').innerHTML = oldHtml
document.getElementById('preis').style.textAlign = 'left'
map.removeOverlay(marker_ziel)
marker_ziel = false
}
else {
place = response.Placemark[0]
address = place.address
address = address.replace(/^(.{5,}\d\d\d\d\d).*$/i, "$1")
document.getElementById("ziel").value = address
document.getElementById("ziel").style.color = "#000000"
}
}
function dragendStart() {
point = marker_start.getLatLng()
geocoder.getLocations(point, getStartAddress);
}
function dragendZiel() {
point = marker_ziel.getLatLng()
geocoder.getLocations(point, getZielAddress);
}
function loadLatLng() {
oldHtml = document.getElementById('preis').innerHTML
document.getElementById('preis').innerHTML = ''
document.getElementById('preis').style.textAlign = 'center'
start = 'Krefeld, '
ziel = 'Krefeld, '
geocoder.getLatLng(start, loadedStart)
geocoder.getLatLng(ziel, loadedZiel)
}
function loadedStart(LatLng) {
error = false
if(!LatLng) {
showError("start", "Die Adresse konnte leider nicht gefunden werden")
return
}
startLatLng = LatLng
}
function loadedZiel(LatLng) {
if(!LatLng) {
showError("ziel", "Die Adresse konnte leider nicht gefunden werden")
return
}
zielLatLng = LatLng
showRoute()
}
function showRoute() {
if (error) return false;
directions = new GDirections(map)
GEvent.addListener(directions, 'addoverlay', routeLoad)
directions.loadFromWaypoints(new Array(startLatLng, zielLatLng))
}
function routeLoad() {
polyline = directions.getPolyline()
distance = polyline.getLength()
duration = directions.getDuration()
bounds = directions.getBounds()
directions.clear()
var redpolyline = createRedPolyline()
map.addOverlay(redpolyline)
marker_start = new GMarker(polyline.getVertex(0), {'icon':getIcon(true), 'title':'Startpunkt', 'draggable':true})
GEvent.addListener(marker_start, 'dragend', dragendStart)
GEvent.addListener(marker_start, 'dragend', recalculateRoute)
map.addOverlay(marker_start)
marker_ziel = new GMarker(polyline.getVertex(polyline.getVertexCount()-1), {'icon':getIcon(false), 'title':'Zielpunkt', 'draggable':true})
GEvent.addListener(marker_ziel, 'dragend', dragendZiel)
GEvent.addListener(marker_ziel, 'dragend', recalculateRoute)
map.addOverlay(marker_ziel)
requestPrice()
map.zoomOut()
}
function createRedPolyline() {
var vertexes = new Array();
for(var i = 0; i'
map.clearOverlays()
startLatLng = marker_start.getLatLng()
zielLatLng = marker_ziel.getLatLng()
showRoute()
}
function requestPrice() {
request = ajax();
var target = "/rechner.php?distance="+distance+"&duration="+duration.seconds
request.open('GET', target, true)
request.onreadystatechange = displayPrice
request.send(null)
}
function displayPrice() {
if(request.readyState != 4) return
prices = request.responseText
if(prices == 'error') {
document.getElementById('preis').innerHTML = 'Es ist ein Fehler während der Berechnung Ihrer Anfrage aufgetreten!'
document.getElementById('preis').innerHTML += '
Bitte versuchen Sie es später erneut.'
document.getElementById('preis').innerHTML += '
Bei wiederholtem Auftreten dieses Fehlers informieren Sie uns bitte'
document.getElementById('preis').innerHTML += ' unter report@takeataxi.de.'
document.getElementById('preis').style.textAlign = 'left'
return
}
var priceparts = prices.split("|")
preisOhne = priceparts[0]
preisNormal = priceparts[1]
preisStark = priceparts[2]
minOhne = parseInt(priceparts[3])
minNormal = parseInt(priceparts[4])
minStark = parseInt(priceparts[5])
var html = ''
html += (Math.round(distance/100)/10)+' km + Wartezeit'
html += '
';
html += '
€'+preisOhne+'
'
html += '
€'+preisNormal+'
'
html += '
€'+preisStark+'
'
html += '
'
html += '
';
html += '
Preis '+minOhne+' min
'
html += '
normal Verkehr '+(minOhne+minNormal)+' min
'
html += '
stark '+(minOhne+minStark)+' min
'
html += '
'
document.getElementById('preis').innerHTML = html
document.getElementById('preis').style.textAlign = 'center'
}