【问题标题】:Create a marker on the edge of a circle using jQuery/Javascript/GM使用 jQuery/Javascript/GM 在圆的边缘创建标记
【发布时间】:2013-07-18 09:57:23
【问题描述】:

我有一个名为“影响”的圆圈,我想在圆圈的边缘创建一个标记。我想不出有什么办法。

我的圈子是这样设置的-

var influenceOptions = {
    strokeColor: "#00CC00",
    strokeOpacity: 0.7,
    strokeWeight: 0.5,
    fillColor: "#00CC00",
    fillOpacity: 0.35,
    map: map,
    center: latlng,
    radius: 30
};
influence = new google.maps.Circle(influenceOptions);

如何在该圆圈的随机点上创建一个标记?

更新:http://jsfiddle.net/jArU2/4/

如何在这个圆圈的边缘添加一个新标记?

【问题讨论】:

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


    【解决方案1】:

    使用

    1. Math.random()* 360 获取随机标题
    2. 使用google.maps.Circle.getRadius获取圆的半径
    3. 使用google.maps.geometry.spherical.computeOffset 计算圆上随机航向的点。注意:这需要including the geometry library
    4. 将您的地图变量设为全局变量,以便一切正常

    updated fiddle

    function addInfluence(latlng){
        you = new google.maps.Marker({
                                     map: map,
                                     position: latlng,
                                     });
        
        var influenceOptions = {
          strokeColor: "#00CC00",
          strokeOpacity: 0.7,
          strokeWeight: 0.5,
          fillColor: "#00CC00",
          fillOpacity: 0.35,
          map: map,
          center: latlng,
          radius: 3000
        };
        influence = new google.maps.Circle(influenceOptions);
        var bearing = Math.random()*360;
        var newPoint = google.maps.geometry.spherical.computeOffset(latlng,influence.getRadius(), bearing);
        var marker2 = new google.maps.Marker({map:map, position:newPoint});
        map.fitBounds(influence.getBounds());
    }
    

    代码 sn-p:

    var map;
    jQuery(document).ready(function() {
      var latlng = new google.maps.LatLng(40.747688, -74.004142);
    
      var options = {
        zoom: 16,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.SATELLITE
      };
      map = new google.maps.Map($('#map')[0], options);
    
      addInfluence(latlng);
    });
    
    function addInfluence(latlng) {
      you = new google.maps.Marker({
        map: map,
        position: latlng,
      });
    
      var influenceOptions = {
        strokeColor: "#00CC00",
        strokeOpacity: 0.7,
        strokeWeight: 0.5,
        fillColor: "#00CC00",
        fillOpacity: 0.35,
        map: map,
        center: latlng,
        radius: 3000
      };
      influence = new google.maps.Circle(influenceOptions);
      var bearing = Math.random() * 360;
      var newPoint = google.maps.geometry.spherical.computeOffset(latlng, influence.getRadius(), bearing);
      var marker2 = new google.maps.Marker({
        map: map,
        position: newPoint
      });
      map.fitBounds(influence.getBounds());
    }
    #map {
      height: 100%;
      width: 100%;
    }
    
    html,
    body {
      height: 100%;
      width: 100%;
      padding: 0px;
      margin: 0px;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&libraries=geometry"></script>
    
    <div id="map"></div>

    【讨论】:

      猜你喜欢
      • 2013-09-12
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 2022-07-26
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      相关资源
      最近更新 更多