1

現在実行しているコードは次のとおりです。すべてのポリゴンに関する情報を表示したいマップにポリゴンが表示された後、ユーザーは独自のポリゴンを作成できます。情報ウィンドウを開いていますが、さまざまなポリゴンの情報を取得できません

何かご意見は?

<?php foreach ($area->result() as $f):?>

// Create an array with the coordanates of each area

var area<?=$f->id?>Coords = [
    <?php $latlng=$this->resources_data->field_latlng($f->id);?>
    <?php foreach ($latlng->result() as $point):?>
    new google.maps.LatLng(<?=$point->lat?>, <?=$point->lng?>),
    <?php endforeach;?>
];

// Create a polygon with the points of the area

var area<?=$f->id?>=new google.maps.Polygon({
    paths: area<?=$f->id?>Coords,
    strokeColor: '#FF0000',
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: '#FF0000',
    fillOpacity: 0.35
});
// Add the Field to the map.
area<?=$f->id?>.setMap(map);

google.maps.event.addListener(field<?=$f->id?>,'click',function(event){
      infowindow.setContent(contentString);
      if (event) {
         point = event.latLng;
      }
      infowindow.setPosition(point);
      infowindow.open(map);
});

google.maps.event.addListener(map, 'click', function() {
        infowindow.close();
        });


<?php endforeach;?>

var contentString = '<div id="content" class="h300 rad3">'+
    '<div>'+
    '</div>'+
    '<h2 ><?=$f->name?> </h2>'+
    '<div id="bodyContent">'+
    '<div class="bgC m20l glow3cb rad3 h100 w350 inlineB vtop m15b m15r">' +
    ' '+
    ''+
    '<div class="inlineT vtop w180 m5l"> '+
    '<div class="inlineT vtop m5l"> '+
    '</div>';

var infowindow = new google.maps.InfoWindow({
    content: contentString
});
4

1 に答える 1

1

infoWindow の内容を多角形に関連付ける 1 つの方法は、この例で行われているように関数クロージャを使用することです(createClickablePoly 関数を参照)。クリック可能なサイドバーが必要ない場合は、その機能を次のように単純化できます。

function createClickablePoly(poly, html) {
    var contentString = html;
    google.maps.event.addListener(poly,'click', function(event) {
      infowindow.setContent(contentString);
      infowindow.setPosition(event.latLng);
      infowindow.open(map);
    }); 
}
于 2012-10-23T00:20:17.693 に答える