var lanchester; if(!lanchester) lanchester = {}; if(!lanchester.hdj) lanchester.hdj = {}; lanchester.hdj.RouteMap = {}; (function(){ var directionsDisplay; var directionsService; var mapObj; var destMarker; var startMarker; var startLatLng; var destLatLng; var mainInfoWindow; var routes; function setMap(map_id,panel_id,center,options){ var mapOptions = { zoom: 17, center: center, mapTypeControl : true, navigationControl : true, scrollwheel: false, mapTypeId: google.maps.MapTypeId.ROADMAP }; mapObj = new google.maps.Map(document.getElementById(map_id), mapOptions); var renderOptions = { draggable: false, suppressMarkers: true, preserveViewport: false }; directionsDisplay = new google.maps.DirectionsRenderer(renderOptions); directionsService = new google.maps.DirectionsService(); directionsDisplay.setMap(mapObj); if(panel_id != null){ directionsDisplay.setPanel(document.getElementById(panel_id)); } }; function openInfoWindow(map, marker, options){ var infoWindow = new google.maps.InfoWindow(options); google.maps.event.addListener(infoWindow, 'domready', function(){ var centerLatLng = new google.maps.LatLng(marker.position.lat(), marker.position.lng()); map.setCenter(centerLatLng); map.panBy(0,-130); }); return function(){ infoWindow.open(map, marker); }; } function openInfoWindowNoMarker(map, latlng, innerHtml){ var infoWindow = new google.maps.InfoWindow({content: innerHtml}); return function(){ infoWindow.setPosition(latlng); infoWindow.open(map); map.panTo(latlng); }; } function searchRoute(options, callback){ if(options['travelmode']){ if(options['travelmode'] == 1){ optTravelMode = google.maps.TravelMode.DRIVING; }else if(options['travelmode'] == 2){ optTravelMode = google.maps.TravelMode.WALKING; } } var destLatLng = new google.maps.LatLng(destMarker.position.lat(), destMarker.position.lng()); var request = { origin: startLatLng, destination: destLatLng, travelMode: optTravelMode, provideRouteAlternatives: true, unitSystem: google.maps.DirectionsUnitSystem.METRIC, optimizeWaypoints: true, avoidHighways: false, avoidTolls: false, language: 'ja', region: 'jp' }; var destLatLng = new google.maps.LatLng(destMarker.position.lat(), destMarker.position.lng()); directionsService.route(request, callback); } function openPrintURL(options){ var directions = directionsDisplay.getDirections(); var route = directions.routes[directionsDisplay.getRouteIndex()]; var daddr = []; var via = []; var url = 'http://maps.google.com/maps?f=d&source=s_d&hl=ja&mra=ls&ie=UTF8'; var dirflg = 'd'; switch (directions.travelMode){ case 'DRIVING': dirflg = 'd'; break; case 'WALKING': dirflg = 'w'; break; default: dirflg = 'd'; break; } url += '&dirflg='+dirflg; url += '&saddr=' + startLatLng.lat() + ',' + startLatLng.lng() for(var i = 0; i < route.legs.length; i++){ for(var j = 0; j < route.legs[i].via_waypoint.length; j++){ daddr.push(route.legs[i].via_waypoint[j].location.lat() + ',' + route.legs[i].via_waypoint[j].location.lng()); via.push(daddr.length); } } daddr.push(dealerLatLng.lat()+','+dealerLatLng.lng()); url += '&daddr=' + daddr.join('+to:'); if(via.length > 0){ url += '&via=' + via.join(','); } url += '&z='+mapObj.getZoom(); var latlng = mapObj.getCenter(); url += '&sll=' + latlng.toUrlValue(); var bounds = mapObj.getBounds(); var x_lng = bounds.getNorthEast().lng() - bounds.getSouthWest().lng(); var y_lat = bounds.getNorthEast().lat() - bounds.getSouthWest().lat(); url += '&sspn=' + y_lat + ',' + x_lng; url += '&layer=c&pw=2'; window.open(url, "_blank"); } function getDestMarker(){return destMarker;} function setDestMarker(marker){destMarker = marker;} function getStartMarker(){return startMarker;} function setStartMarker(marker){startMarker = marker;} function getMapObj(){return mapObj;} function setMapObj(map){mapObj = map;} function getStartLatLng(){return startLatLng;} function setStartLatLng(latlng){ startLatLng = latlng; } function getDestLatLng(){return destLatLng;} function setDestLatLng(latlng){destLatLng = latlng;} function setRoutes(route){routes = route}; function getRoutes(){return routes}; function removeStartMarker(){ if(startMarker){ startMarker.setMap(null); } } function removeDestMarker(){ if(destMarker){ destMarker.setMap(null); } } function getDirectionsDisplay(){return directionsDisplay;} var ns = lanchester.hdj.RouteMap; ns.setMap = setMap; ns.startMarker = startMarker; ns.destMarker = destMarker; ns.openInfoWindow = openInfoWindow; ns.openInfoWindowNoMarker = openInfoWindowNoMarker; ns.searchRoute = searchRoute; ns.openPrintURL = openPrintURL; ns.getStartMarker = getStartMarker; ns.setStartMarker = setStartMarker; ns.getDestMarker = getDestMarker; ns.setDestMarker = setDestMarker; ns.getStartLatLng = getStartLatLng; ns.setStartLatLng = setStartLatLng; ns.getDestLatLng = getDestLatLng; ns.setDestLatLng = setDestLatLng; ns.getMapObj = getMapObj; ns.setMapObj = setMapObj; ns.removeStartMarker = removeStartMarker; ns.removeDestMarker = removeDestMarker; ns.getDirectionsDisplay = getDirectionsDisplay; ns.getRoutes = getRoutes; ns.setRoutes = setRoutes; })();