0

Ultimatum WordPress テーマ テンプレートで以下のコードを PHP コードと共に使用して、マップに必要な動的な値を提供します。マーカーが定義されていないというエラーが発生します。コードは 1 ページでのみ使用されるため、ヘッダーやフッターではなく、ページの 3/4 下の div タグ内に配置されます。運が悪かったので、いくつかの提案を試しました。

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
//<![CDATA[
var geocoder;
var map;
function initialize ()
{
    geocoder = new google.maps.Geocoder();
    var address = document.getElementById('Property').value;
    var city = document.getElementById('City').value;
    var postal_code = document.getElementById('PostalCode').value;
    var address_google_map = address + ', ' + city + ', ON ' + postal_code;

    var myOptions =
    {
        zoom: 15,
        mapTypeControl: true,
        zoomControl: true,
        zoomControlOptions:
        {
            style: google.maps.ZoomControlStyle.SMALL
        },
        StreetViewControl: false,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    var info_text = address + '<br />' + city + ' ON';
    var info_window = new google.maps.InfoWindow
    ({
        content: info_text
    });
    var map = new google.maps.Map(document.getElementById('google_map'), myOptions);

    geocoder.geocode( { 'address': address_google_map}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });


    google.maps.event.addListener(marker, 'click', function()
    {
        info_window.open(map, marker);
    });
}


window.onload = function() {
   initialize();
}
//]]>
</script>
4

1 に答える 1

3

マーカーは、Geocoder コールバック ルーチンに対してローカルです。クリック リスナーの定義を、スコープ内の関数内に移動します。

geocoder.geocode( { 'address': address_google_map}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.setCenter(results[0].geometry.location);
    var marker = new google.maps.Marker({
        map: map,
        position: results[0].geometry.location
    });

    google.maps.event.addListener(marker, 'click', function()
    {
    info_window.open(map, marker);
    });
  } else {
    alert("Geocode was not successful for the following reason: " + status);
  }
});

}

于 2013-05-24T05:38:27.807 に答える