Javascript 矩形边界内的随机标记?

Javascript 矩形边界内的随机标记?,javascript,google-maps,random,Javascript,Google Maps,Random,这是我的代码: function getRandom_marker(bounds) { var leftBottom=[bounds.getSouthWest().lat(),bounds.getSouthWest().lng()] var rightTop=[bounds.getNorthEast().lat(),bounds.getNorthEast().lng()] var latlng=[leftBottom[0]+Math.floor(Math.random() * (ri

这是我的代码:

function getRandom_marker(bounds) {
  var leftBottom=[bounds.getSouthWest().lat(),bounds.getSouthWest().lng()]
  var rightTop=[bounds.getNorthEast().lat(),bounds.getNorthEast().lng()]
  var latlng=[leftBottom[0]+Math.floor(Math.random() * (rightTop[0]-leftBottom[0])),
    leftBottom[1]+Math.floor(Math.random() * (rightTop[1]-leftBottom[1]))]
  return latlng
 }
我使用这段代码生成一个随机的,但有时,标记不在地图边界内

那么,我的代码怎么了

谢谢

更新:

这是代码has Math.abs:

而这并不是我们所拥有的:


您可能需要尝试以下方法:

function getRandom_marker(bounds) {
  var lat_min = bounds.getSouthWest().lat(),
      lat_range = bounds.getNorthEast().lat() - lat_min,
      lng_min = bounds.getSouthWest().lng(),
      lng_range = bounds.getNorthEast().lng() - lng_min;

  return new google.maps.LatLng(lat_min + (Math.random() * lat_range), 
                                lng_min + (Math.random() * lng_range));
}
完整示例:

<!DOCTYPE html>
<html> 
<head> 
   <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
   <title>Google Maps Random Points Demo</title> 
   <script src="http://maps.google.com/maps/api/js?sensor=false" 
           type="text/javascript"></script> 
</head> 
<body> 
   <div id="map" style="width: 400px; height: 300px;"></div> 

   <script type="text/javascript"> 

   function getRandom_marker(bounds) {
     var lat_min = bounds.getSouthWest().lat(),
         lat_range = bounds.getNorthEast().lat() - lat_min,
         lng_min = bounds.getSouthWest().lng(),
         lng_range = bounds.getNorthEast().lng() - lng_min;

     return new google.maps.LatLng(lat_min + (Math.random() * lat_range), 
                                   lng_min + (Math.random() * lng_range));
   }

   var map = new google.maps.Map(document.getElementById('map'), {
     zoom: 8,
     center: new google.maps.LatLng(-34.397, 150.644),
     mapTypeId: google.maps.MapTypeId.ROADMAP
   });

   google.maps.event.addListener(map, 'tilesloaded', function () {
     var mapBounds = map.getBounds();

     for (var i = 0; i < 20; i++) {
       new google.maps.Marker({
         position: getRandom_marker(mapBounds), 
         map: map
       });   
     }
   });

   </script> 
</body> 

谷歌地图随机点演示
函数getRandom_标记(边界){
var lat_min=bounds.getSouthWest().lat(),
lat_range=bounds.getNorthEast().lat()-lat_min,
lng_min=bounds.getSouthWest().lng(),
lng_range=bounds.getNorthEast().lng()-lng_min;
返回新的google.maps.LatLng(lat_min+(Math.random()*lat_range),
lng_min+(数学随机()*lng_范围));
}
var map=new google.maps.map(document.getElementById('map'){
缩放:8,
中心:新google.maps.LatLng(-34.397150.644),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
google.maps.event.addListener(映射'tilesloaded',函数(){
var mapBounds=map.getBounds();
对于(变量i=0;i<20;i++){
新的google.maps.Marker({
位置:getRandom_标记(mapBounds),
地图:地图
});   
}
});

截图:


@Daniel,我认为使用Math.abs是不对的,因为lat,lng有负数,请看我的更新版。@zjm1126:你说得对,这是没有必要的,因为北方总是比南方大,西部总是比东部大。修正我的答案。