2016-11-07 7 views
0

Я пытаюсь создать круг с таким центром var center = {lat: 12.972876848034, lng: 77.589721116026} (я беру этот пункт на Картах Google) на уровне изображения из файла JPG. Но круг не появляется.Рисовать круг с помощью EPSG: 4326 координатный центр в слое изображения OpenLayers 2

Вот мой код.

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://openlayers.org/api/OpenLayers.js"></script> 
    <script type="text/javascript"> 
     var map; 
     function init() { 
      var imgWidth = 1864; 
      var imgHeight = 1070; 
      var extend = new OpenLayers.Bounds(77.58356602859499, 12.965959702159019, 77.6046633014679, 12.976413580812167); 
      var layer = new OpenLayers.Layer.Image(
       'Image layer', 
       'images/view.jpg', 
       extend, 
       new OpenLayers.Size(imgWidth, imgHeight), 
       {numZoomLevels: 6} 
      ); 

      map = new OpenLayers.Map(
      { 
       div: "mapdiv", 
       maxExtent: extend, 
       maxResolution: 156543, 
       numZoomLevels: 6 
      } 
      ); 

      map.addLayers([layer]); 
      map.zoomToMaxExtent(); 

      var center = {lat: 12.972876848034, lng: 77.589721116026} 
      var lonLat = new OpenLayers.LonLat(center.lng, center.lat) 
      var pCenter = new OpenLayers.Geometry.Point(lonLat.lon, lonLat.lat); 

      var circle = OpenLayers.Geometry.Polygon.createRegularPolygon(pCenter, 50, 70, 0); 
      var circleFeature = new OpenLayers.Feature.Vector(circle); 
      var circleStyle = new OpenLayers.StyleMap({'strokeColor': '#1E88E5', 'strokeWidth': 2}); 
      var circleLayer = new OpenLayers.Layer.Vector("Route Layer", {styleMap: circleStyle}); 
      circleLayer.addFeatures([circleFeature]); 
     } 
     init(); 
    </script> 
</head> 
<body onload="init()"> 
    <div style="height: 100vh" id="mapdiv"></div> 
</body> 

Как это вызвано и как я могу решить эту проблему? Заранее благодарим за любые предложения.

+0

Пожалуйста, разместите полную, воспроизводимую версию вашего кода. – scai

+0

@scai Я обновил исходный код, извините за это! – dauruy

ответ

0

Я нашел ответ, потому что я использую координату EPSG: 4326, единица радиуса должна быть в градусах. Я установил radius = 0.1, и теперь это сработало.

+0

Это то, что вы изменили? circle = OpenLayers.Geometry.Polygon.createRegularPolygon (pCenter, 0.1, 70, 0); –

+0

Да, вот и все. – dauruy