2013-12-05 2 views
1

У меня есть следующие функции, в которой я пытаюсь нарисовать многоугольник с определенным Lat LongНе может рисовать многоугольник с помощью Google Map API V2

function AddTile(minLat, minLon, maxLat, maxLon) 
     { 
      var points  = []; 


      points.push(new GLatLng(parseFloat(maxLat), parseFloat(maxLon) )); 
      points.push(new GLatLng(parseFloat(minLat), parseFloat(maxLon) )); 
      points.push(new GLatLng(parseFloat(minLat), parseFloat(minLon) )); 
      points.push(new GLatLng(parseFloat(maxLat), parseFloat(minLon) ));    
      var polygon = new GPolygon(points, "#f33f00", 5, 1, "#ff0000", 0.2); 
     map.addOverlay(polygon); 


    //map.addOverlay(new GPolyline(points,'#8080FF', 8, 0.5, '#8080FF', 0.5)); 


     } 

, но не могу получить полигон, нарисованный на карте. Как правило, полилиния может быть нарисована, что показывает линии, имеющие разрыв между ними. Что я хочу знать от вас: не поддерживает ли мой API для карт Google рисование многоугольника. Я использую API карт Google V2. если есть способ для этого сортировать, то опишите. Также, если многоугольник не может быть нарисован, то как я могу использовать новую конструкцию GPolyline() для рисования полинов без пробелов и цвета фона, чтобы устранить пробелы линий. Я попытался дать вес значение 10, что делает линии более твердыми, поэтому делает непрозрачный, который я не хочу. Пожалуйста, руководство. Спасибо

+1

Почему Вы используете [устаревшее (и выключен) Google Maps JavaScript API v2] (https://developers.google.com/maps/documentation/javascript/v2/introduction). Вы должны развиваться для [API Javascript для Google Maps v3] (https://developers.google.com/maps/documentation/javascript/basics) – geocodezip

+0

Что делать, если мы конвертируем в API v3. будет ли существующая архитектура, построенная нами на V2? –

+0

Какая "архитектура"? Код, который вы опубликовали до сих пор, представляет собой простой порт для v3. Два API-интерфейса достаточно разные, что требует работы для переноса некоторых функций, но v3 поддерживается, v2 не поддерживается и не гарантирует, что он будет продолжать работать. Оболочка v2 для v3 не поддерживает (и никогда не будет) полную функциональность v2, это то, что она есть. – geocodezip

ответ

1

Как geocodezip предложил использовать API v3. Ниже я преобразовал ваш код, который использовал старые (устаревшие) функции v2, такие как GLatLng, GPolygon и v3 эквиваленты. Смотрите, если он работает

function AddTile(minLat, minLon, maxLat, maxLon) 
{ 
    var mapOptions = { 
         zoom: 4, 
         center: new google.maps.LatLng(5.44, 22.67), // set centre somewhere in Africa 
         mapTypeId: google.maps.MapTypeId.TERRAIN 
         };  
    var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 
    var points  = []; 
    points.push(new google.maps.LatLng(parseFloat(maxLat), parseFloat(maxLon))); 
    points.push(new google.maps.LatLng(parseFloat(minLat), parseFloat(maxLon))); 
    points.push(new google.maps.LatLng(parseFloat(minLat), parseFloat(minLon))); 
    points.push(new google.maps.LatLng(parseFloat(maxLat), parseFloat(minLon))); 
    points.push(new google.maps.LatLng(parseFloat(maxLat), parseFloat(minLon))); // same as your 1st point, // polygons should be closed 

    // Draw polygon. 
    var polygon = new google.maps.Polygon({ 
         paths: points, 
         strokeColor: '#f33f00', 
         strokeOpacity: 1, 
         strokeWeight: 5, 
         fillColor: '#ff0000', 
         fillOpacity: 0.2 
        }); 
    polygon.setMap(map); 

    google.maps.event.addListener(map, 'click', function(event){ 
     alert('whatever you want to do'); 
    }); // in case you want to do something on user click 
} 
Смежные вопросы