开发者

Random marker within a rectangular bounds?

this is my code :

function getRandom_marker(bounds) {
  var leftBottom=[bounds.getSouthWest().lat(),bounds.getSouthWest().ln开发者_如何学编程g()]
  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
 }

i use this code to Generate a random , but sometimes, the marker is not in the map bounds,

so , what's wrong with my code ?

thanks

updated:

this is the code has Math.abs :

http://jsfiddle.net/PNYCf/1/

and this is not has:

http://jsfiddle.net/pRjBr/


You may want to try the following:

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));
}

Complete example:

<!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> 

Screenshot:

Random marker within a rectangular bounds?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜