8

いろいろな国のハイキングについてのページがあります。国ごとにそのようなページを作成しようとしていますが、Google マップを自動的に国の中心に配置し、国のサイズに応じてフォーカスを調整する方法がわかりません。

ここに私の問題ページがあります:

http://www.comehike.com/outdoors/country.php?country_id=6&country_name=ベラルーシ

http://www.comehike.com/outdoors/country.php?country_id=1&country_name=United%20States

センタリングとフォーカス サイズが静的であることがわかりますか? これは、現在このコードを使用してマップを中央に配置しているためです。

function initialize( )
{
    var myLatlng = new google.maps.LatLng(37.775, -122.4183333);

    var myOptions =
    {
      zoom: 2,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}

しかし、それは国名でそれを行う方法がわからず、サイズを自動的に調整する方法がわからないためです。国名を初期化関数に渡すことで、これをすべて行うにはどうすればよいですか?

ありがとう!

4

1 に答える 1

13

ジオコーディング サービスを使用して、国名を座標に変換できます。Google が提供する例は地図を中央に配置しますが、ズームはしません。ズームするには、ジオコーダから返された LatLngBounds オブジェクトを使用して map.fitBounds() メソッドを使用する必要があります。これはコード例です:

var myLatlng = new google.maps.LatLng(37.775, -122.4183333);

var myOptions =
{
    zoom: 2,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

var address = "Belarus";
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        map.fitBounds(results[0].geometry.bounds);
    } else {
        alert("Geocode was not successful for the following reason: " + status);
    }
});
于 2011-05-22T06:32:57.847 に答える