我在网上发现这个代码几乎可以满足我的需求。问题是我需要它根据用户是想要当天交货还是当天紧急交货给我一个价格。我不能让它工作。
表单应该有两个地址,计算它们之间的距离,如果选择了相同的日期,则将它们乘以1英镑;如果选择了相同的日期,则为1.20英镑。
<?php
session_start();
$rate = 1;
$urgent = 1.2;
//}
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script type="text/javascript">
//<![CDATA[
var map = null;
var directionDisplay;
var directionsService = new google.maps.DirectionsService();
function initialize() {
directionsDisplay = new google.maps.DirectionsRenderer();
var UK = new google.maps.LatLng(55.7591402,-4.1883331);
var mapOptions = {
center : UK,
zoom : 4,
minZoom : 3,
streetViewControl : false,
mapTypeId : google.maps.MapTypeId.ROADMAP,
zoomControlOptions : {style:google.maps.ZoomControlStyle.MEDIUM}
};
map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
//Find From location
var fromText = document.getElementById('start');
var fromAuto = new google.maps.places.Autocomplete(fromText);
fromAuto.bindTo('bounds', map);
//Find To location
var toText = document.getElementById('end');
var toAuto = new google.maps.places.Autocomplete(toText);
toAuto.bindTo('bounds', map);
//
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('directions-panel'));
/*var control = document.getElementById('control');
control.style.display = 'block';
map.controls[google.maps.ControlPosition.TOP].push(control);*/
}
function calcRoute() {
var start = document.getElementById('start').value;
var end = document.getElementById('end').value;
var request = {
origin: start,
destination: end,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
computeTotalDistance(response);
}
});
}
function computeTotalDistance(result) {
var total = 0;
var myroute = result.routes[0];
for (i = 0; i < myroute.legs.length; i++) {
total += myroute.legs[i].distance.value;
}
total = total / 1000;
/*Start Calculating Distance Fair*/
if (document.getElementById('sameday').checked == true) {
var cost = ((total * <?php echo $rate; ?>));
}
else if (document.getElementById('samedayurgent').checked == true) {
var cost = ((total * <?php echo $urgent; ?>));
}
var fare = total * cost;
var fare = Math.round(fare*100)/100;
/*Distance Fair Calculation Ends*/
document.getElementById("total").innerHTML = "Total Distance = " + total + " km and FARE = £" + fare;
}
function auto() {
var input = document.getElementById[('start'), ('end')];
var types
var options = {
types: [],
componentRestrictions: {country: ["UK"]}
};
var autocomplete = new google.maps.places.Autocomplete(input, options);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body onLoad="initialize()">
<table width="380px" cellpadding="0" cellspacing="0" style="border-collapse:collapse">
<tr>
<td style="padding:5px;">
<table width="375px" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div id="map_canvas" style="width: 374px; height: 300px; border: solid 1px #336699"></div></td>
</tr>
<tr>
<td><div id="form" style="width:374px; text-align:center; border: solid 1px #336699; background:#d1e1e4;">
<input type="radio" name="post-type" value="sameday" checked> Same Day
<br>
<input type="radio" name="post-type" value="samedayurgent"> Same Day Urgent
<br>
From:
<input type="text" id="start" size="60px" name="start" placeholder="Enter Location From">
<br />
To:
<input size="60px" type="text" id="end" name="end" placeholder="Enter Destination ">
<input type="button" value="Calculate" onClick="calcRoute();">
<div id="total"></div>
</div></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
答案 0 :(得分:0)
基于你所说的 - 摆脱
<?php
session_start();
$rate = 1;
$urgent = 1.2;
并将computeTotalDistance函数更改为
function computeTotalDistance(result) {
var rate = 1;
var urgent = 1.2;
var total = 0;
var cost;
var myroute = result.routes[0];
for (i = 0; i < myroute.legs.length; i++) {
total += myroute.legs[i].distance.value;
}
total = total / 1000;
/*Start Calculating Distance Fair*/
if (document.getElementById('sameday').checked == true) {
cost = total * rate;
} else if (document.getElementById('samedayurgent').checked == true) {
cost = total * urgent;
}
cost = Math.round(cost * 100) / 100;
/*Distance Fair Calculation Ends*/
document.getElementById("total").innerHTML = "Total Distance = " + total + " km and FARE = £" + cost;
}
正如Markai指出的那样
<input type="radio" name="post-type" id='sameday' checked> Same Day
<br>
<input type="radio" name="post-type" id='samedayurgent'> Same Day Urgent
答案 1 :(得分:-1)
感谢大家的帮助。以下是我如何使用它:
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script type="text/javascript">
//<![CDATA[
var map = null;
var directionDisplay;
var directionsService = new google.maps.DirectionsService();
function initialize() {
directionsDisplay = new google.maps.DirectionsRenderer();
var UK = new google.maps.LatLng(56.9630794,-4.016831);
var mapOptions = {
center : UK,
zoom : 6,
minZoom : 3,
streetViewControl : false,
mapTypeId : google.maps.MapTypeId.ROADMAP,
zoomControlOptions : {style:google.maps.ZoomControlStyle.MEDIUM}
};
map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
//Find From location
var fromText = document.getElementById('start');
var fromAuto = new google.maps.places.Autocomplete(fromText);
fromAuto.bindTo('bounds', map);
//Find To location
var toText = document.getElementById('end');
var toAuto = new google.maps.places.Autocomplete(toText);
toAuto.bindTo('bounds', map);
//
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('directions-panel'));
/*var control = document.getElementById('control');
control.style.display = 'block';
map.controls[google.maps.ControlPosition.TOP].push(control);*/
}
function calcRoute() {
var start = document.getElementById('start').value;
var end = document.getElementById('end').value;
var request = {
origin: start,
destination: end,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
computeTotalDistance(response);
}
});
}
function computeTotalDistance(result) {
var total = 0;
var myroute = result.routes[0];
for (i = 0; i < myroute.legs.length; i++) {
total += myroute.legs[i].distance.value;
}
total = total / 1609.344;
var total = Math.round(total);
/*Start Calculating Distance Fair*/
var sameday = document.getElementById("sameday");
var samedayurgent = document.getElementById("samedayurgent");
if (sameday.checked)
{
var rate = 1;
}
else if (samedayurgent.checked)
{
var rate = 1.20;
}
var fare = total * rate;
var fare = Math.round(fare*100)/100;
if (fare < 5.5)
{
fare= 5.5;
}
var price = fare.toFixed(2)
/*Distance Fair Calculation Ends*/
document.getElementById("total").innerHTML = " " + total + " miles";
document.getElementById("price").innerHTML = " £" + price + " (excl. VAT)";
}
function auto() {
var input = document.getElementById[('start'), ('end')];
var types
var options = {
types: [],
componentRestrictions: {country: ["UK"]}
};
var autocomplete = new google.maps.places.Autocomplete(input, options);
}
google.maps.event.addDomListener(window, 'load', initialize);