【问题标题】:If...else statement to print different results from distancesIf...else 语句从距离打印不同的结果
【发布时间】:2018-03-07 17:33:02
【问题描述】:

有谁知道我如何让这个伟大的fiddle 的结果根据距离结果的大小读取不同的内容?

我希望根据距离是否大于 10 公里、20 公里、30 公里等,打印一个额外的句子说不同的事情。

我似乎不知道在现有代码中将 if...else 放在哪里。

JS:

var geocoder;
var map;
var polyline;
var markers = [];

function initialize() {
  map = new google.maps.Map(
    document.getElementById("map_canvas"), {
      center: new google.maps.LatLng(37.4419, -122.1419),
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
  calculateDistance();
  google.maps.event.addDomListener(document.getElementById('btn'), 'click', calculateDistance)
}

function calculateDistance() {
  if (polyline && polyline.setMap) {
    polyline.setMap(null);
  }
  for (var i = 0; i < markers.length; i++) {
    markers[i].setMap(null);
  }
  markers = [];
  var bounds = new google.maps.LatLngBounds();
  var path = [];
  var startPoint = $('#main_from_route_input').val();
  var endPoint = $('#main_to_route_input').val();
  var geocoderStart = new google.maps.Geocoder();
  var geocoderEnd = new google.maps.Geocoder();
  var coordsStart, coordsEnd;

  geocoderStart.geocode({
    'address': startPoint
  }, function(response, status) {
    if (status != google.maps.GeocoderStatus.OK) {
      alert('Geocode of first address failed: ' + status);
    }
    coordsStart = response[0].geometry.location;
    bounds.extend(coordsStart);
    var startMark = new google.maps.Marker({
      position: coordsStart,
      map: map,
      title: "start"
    });
    markers.push(startMark);
    path.push(coordsStart);
    geocoderEnd.geocode({
      'address': endPoint
    }, function(response, status) {
      if (status != google.maps.GeocoderStatus.OK) {
        alert('Geocode of second address failed: ' + status);
      }
      coordsEnd = response[0].geometry.location;
      bounds.extend(coordsEnd);
      var endMark = new google.maps.Marker({
        position: coordsEnd,
        map: map,
        title: "end"
      });
      markers.push(endMark);
      path.push(coordsEnd);
      polyline = new google.maps.Polyline({
        path: path,
        map: map
      });
      var distance = (google.maps.geometry.spherical.computeDistanceBetween(coordsStart, coordsEnd) / 1000).toFixed(2);
      $('#distance').val(distance);
      map.fitBounds(bounds);
    });
  });
}

google.maps.event.addDomListener(window, "load", initialize);

HTML:

<form>
  <label>distance:</label>
  <input id="distance" name="km">
  <br>
  <label>from</label>
  <input id="main_from_route_input" value="Copenhagen, Denmark" />
  <br>
  <label>to</label>
  <input id="main_to_route_input" value="Berlin, Germany" />
  <input id="btn" type="button" value="calculate distance" />
</form>
<div id="map_canvas" style="width:750px; height:450px; border: 2px solid #3872ac;"></div>

【问题讨论】:

  • 您想在生成的 HTML 页面上将其打印为文本吗?

标签: javascript jquery google-maps if-statement


【解决方案1】:

我相信如果你在html里面添加一个元素就像

<label>distance:</label>
  <input id="distance" name="km">
  <br>
  <span id="custommessage"></span>

然后,在js中添加之后就可以了

$('#distance').val(distance);
$("#result").text(getCustomMessage(distance))

你可以用你需要的所有 if 或 switch 来添加函数

function getCustomMessage(distance) {
    if (distance > 200) {
      return 'thats really far'
    }
   return `it's ${distance} miles away`
}

希望对您有所帮助!祝你好运:)

【讨论】:

  • 这对我帮助很大,非常感谢!我想知道 - 我是 * 的新手,还没有真正了解“游戏”。为什么这个问题被否决了?只是为了让我知道未来:)
  • 嘿没问题!很高兴能帮助你。嗯不知道关于downvote。也许这是一个不适用于其他问题的问题,它太具体了。但实际上,我只是猜测。