2013-10-30 75 views
2

我尝试了很多,但无法找出问题所在。我想绘制特定经纬度的多边形。多边形将由特定半径的13个坐标组成。多边形围绕中心点绘制

  1. 人在地址和半径在文本框中。
  2. 地理代码获取纬度,该地址的lng
  3. 将地图居中到那里。
  4. 绘制多边形围绕中心点与半径
  5. 应该由13多边形坐标

代码

function showAddress(address, miles) { 
      var geocoder = new google.maps.Geocoder(); 
      geocoder.geocode({ 
       address : address 
      }, function(results, status) { 
       if(status == google.maps.GeocoderStatus.OK) { 
        //searchLocationsNear(results[0].geometry.location); 
        var cordinate = results[0].geometry.location; 
        //alert(cordinate); 
        var mapOptions = { 
         center : cordinate, 
         zoom : 8, 
         mapTypeId : google.maps.MapTypeId.ROADMAP, 
         overviewMapControl : true, 
         overviewMapControlOptions : { 
          opened : true, 
          position : google.maps.ControlPosition.BOTTOM_LEFT 
         } 

        }; 

        // 
        //var address = document.getElementById("address").value; 
        var radius = 1; 
        var latitude = 23.1793013; 
        var longitude = 75.78490970000007; 
        //Degrees to radians 
        var d2r = Math.PI/180; 

        // Radians to degrees 
        var r2d = 180/Math.PI; 

        // Earth radius is 3,963 miles 
        var cLat = (radius/3963) * r2d; 

        var cLng = cLat/Math.cos(latitude * d2r); 

        //Store points in array 
        var points = []; 
        alert("declare array"); 

        var bounds = new google.maps.LatLngBounds(); 

        // Calculate the points 
        // Work around 360 points on circle 
        for(var i = 0; i < 13; i++) { 

         var theta = Math.PI * (i/180); 

         // Calculate next X point 
         circleY = longitude + (cLng * Math.cos(theta)); 
         //console.log("CircleY:"+circleY); 
         // Calculate next Y point 
         circleX = latitude + (cLat * Math.sin(theta)); 
         //console.log("circleX:"+circleX); 
         // Add point to array 
         var aPoint = new google.maps.LatLng(circleX, circleY); 
         points.push(aPoint); 
         bounds.extend(aPoint); 

        } 
        points.push(points[0]); 
        //console.log(points); 
        //to complete circle 

        var colors = ["#CD0000", "#2E6444", "#003F87"]; 

        var Polyline_Path = new google.maps.Polyline({ 
         path : points, 
         strokeColor : colors[0], 
         // color of the outline of the polygon 
         strokeOpacity : 1, 
         // between 0.0 and 1.0 
         strokeWeight : 1, 
         // The stroke width in pixels 
         fillColor : colors[1], 
         fillOpacity : 0 
        }); 
        var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); 
        Polyline_Path.setMap(map); 


       } else { 
        alert(address + ' not found'); 
       } 
      }); 
     } 
+0

参见[此图](http://www.geocodezip.com/v3_polygon_example_donut.html的画圆功能),将点数改为13(从32开始)。它适用于我(有32个顶点)。 – geocodezip

回答

3

替换我< 13;我+ +由

我< 360 ; i + = 360/13

这将工作

感谢

编辑:不需要最后一点,因为GMAP将关闭它自动地