javascript - 如何根据所选半径显示谷歌地图

标签 javascript google-maps google-maps-api-3

我有一个里程下拉列表。当我从下拉列表中选择任何值(例如 10 英里)时,我的谷歌地图应显示在该地点的 10 英里范围内。我该如何做到这一点?

<script src="https://maps.googleapis.com/maps/api/js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      function myMap() {
            var myCenter = new google.maps.LatLng(56.1304, -106.3468);
            var mapProp = { center: myCenter, zoom: 6, scrollwheel: true, draggable: true, mapTypeId: google.maps.MapTypeId.ROADMAP };
            var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);

            marker.setMap(map);
        }
<div id="googleMap" style="height: 100%; width: 100%; position: absolute; top: 0px; left: 0px; "></div>
<div id="searchcontainer" style="position: absolute; z-index: 0; left: 450px; top: 0px;">
    <select id="range" name="range">
        <option value="0">Current Map</option>
        <option value="5">5 Miles</option>
        <option value="10">10 Miles</option>
        <option value="15">15 Miles</option>
        <option value="20">20 Miles</option>
        <option value="25">25 Miles</option>
        <option value="50">50 Miles</option>
        <option value="100">100 Miles</option>
        <option value="250">250 Miles</option>
        <option value="500">500 Miles</option>
    </select>

</div>

最佳答案

一种选择是创建 google.maps.Circle具有正确的中心和所需的半径,然后调用 map.fitBounds(circle.getBounds()) (其中 circle 是圆)。

(请注意,圆的半径以米为单位,因此您需要将输入的英里转换为米)。

screenshot of resulting map

var METERS_PER_MILE = 1609.34;

function myMap() {
  var myCenter = new google.maps.LatLng(56.1304, -106.3468);
  var mapProp = {
    center: myCenter,
    zoom: 6,
    scrollwheel: true,
    draggable: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
  var circle;
  google.maps.event.addDomListener(document.getElementById('range'), 'change', function(evt) {
    var value = $("#range").val();
    if (circle && circle.setMap) circle.setMap(null);
    circle = new google.maps.Circle({
      center: myCenter,
      radius: value * METERS_PER_MILE,
      map: map
    });
    map.fitBounds(circle.getBounds());
  });
}
google.maps.event.addDomListener(window, 'load', myMap);
html,
body {
  height: 100%;
  width: 100%;
  padding: 0px;
  margin: 0px;
}

#googleMap {
  height: 90%;
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="googleMap"></div>
<div id="searchcontainer" style="position: absolute; z-index: 0; left: 450px; top: 0px;">
  <select id="range" name="range">
    <option value="0">Current Map</option>
    <option value="5">5 Miles</option>
    <option value="10">10 Miles</option>
    <option value="15">15 Miles</option>
    <option value="20">20 Miles</option>
    <option value="25">25 Miles</option>
    <option value="50">50 Miles</option>
    <option value="100">100 Miles</option>
    <option value="250">250 Miles</option>
    <option value="500">500 Miles</option>
  </select>
</div>

关于javascript - 如何根据所选半径显示谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52064927/

相关文章:

javascript - 排序对象数组适用于数字但不适用于字符串

javascript - 如何在 mongodb 中查询对象数组

javascript - AWS Cognito - 离线数据可用性

android - Gradle无法与Google map 同步

css - wordpress 页面中的 Google map 样式问题

javascript - 需要从google map API获取纬度和经度

javascript - 从 map 上新添加的标记中找到最近的标记

javascript - 如何使用 jQuery 将 JSON 对象创建到数组中?

javascript - 谷歌地图 geoXML3 : passing a placemark into it's own event listener?

javascript - react map 不渲染