Javascript Google Maps API3 Многоугольник Несколько кругов - PullRequest
1 голос
/ 11 октября 2011

Я использую Mysql и PHP для генерации XML, который используется Google Map. Я устанавливаю маркеры и многоугольники. Маркеры установлены без проблем, однако отображается только один многоугольник, а остальные девять (из базы данных возвращается всего десять) Я совершенно уверен, что это проблема массива, однако я просто не могу понять, почему создается только один полигон. Надеюсь, что кто-то может направить меня в правильном направлении, вот мой код:

   //function to consume xml
   var xml = parseXml(data); 
   var polygonNodes = xml.documentElement.getElementsByTagName("polygon"); 
   for (var i = 0; i < polygonNodes.length; i++) {
   var polylatlng = new google.maps.LatLng( 
          parseFloat(polygonNodes[i].getAttribute("polygon_lat")), 
          parseFloat(polygonNodes[i].getAttribute("polygon_lng"))); 
   }
   createCircle(polylatlng);

  //here i am creating the polygon circle
  function createCircle(polylatlng) { 
  var html = "<div id='infodiv'>HelloWorld</div>"; 
    var circle = new google.maps.Circle({
        map: map,
        center: polylatlng,
        fillColor: '#7491D3',
        fillOpacity: 0.03,
        strokeColor: '#7491D3',
        strokeOpacity: 0.1,
        strokeWeight: 1,
        radius: 18362.55489862987
        }); 
  google.maps.event.addListener(circle, 'click', function() { 
    infoWindow.setContent(html); 
    infoWindow.open(map, circle); 
  }); 
}

1 Ответ

1 голос
/ 11 октября 2011

Если я не читаю это неправильно, вы не включаете функцию createCircle в свой цикл, поэтому она вызывается только один раз.Попробуйте:

for (var i = 0; i < polygonNodes.length; i++) {
    var polylatlng = new google.maps.LatLng( 
          parseFloat(polygonNodes[i].getAttribute("polygon_lat")), 
          parseFloat(polygonNodes[i].getAttribute("polygon_lng"))
    ); 
    createCircle(polylatlng);
}

Хорошие отступы кода полезны для таких проблем:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...