2

私はGoogleマップとAPIを初めて使用し、クリックでマップを特定の領域にパンさせようとしています。APIリファレンスで必要なものを見つけるのに苦労しており、これについてどうすればよいかまったくわからないので、あまりありませんが、これまでのところ私が持っているものは次のとおりです.

任意の領域をクリックすると、その領域のほとんどがパンされ、ズームインして表示されるようにしたいと考えいます。

ほとんどの機能は、マップ自体をクリックするのではなく、テキスト名をクリックしてマップをロードし、正しい場所を表示することで実現します。

function initialize_neighbourhoodmap(neighbourhood_name) {
    var latlng = new google.maps.LatLng(42.949442,-81.228125);

    var zoom = 11;
    var neighbourhood_center = get_neighbourhood_center();

    var myOptions = {
      zoom: zoom,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    map = new google.maps.Map(document.getElementById("neighbourhood_map"),
        myOptions);

    var neighbourhoods = new google.maps.KmlLayer('http://maps.google.com/maps/ms?authuser=0&ie=UTF8&hl=en&oe=UTF8&vps=3&msa=0&output=kml&msid=217366496682144933685.0004bf3be50d3cd7ad1c2', {suppressInfoWindows: true, preserveViewport:true});
    neighbourhoods.setMap(map);

    google.maps.event.addListener(neighbourhoods, 'click', function(KmlFeatureData) {
        var neighbourhood_name = KmlFeatureData.featureData.name;
    load_neighbourhood(neighbourhood_name, neighbourhoods);
    window.location = "#neighbourhood-neighbourhood "+neighbourhood_name;
    });

    if(typeof neighbourhood_name !== 'undefined'){
        load_neighbourhood(neighbourhood_name, neighbourhood_center);
    }
}

function load_neighbourhood (neighbourhood_name, neighbourhoods) {
    var neighbourhoodbounds = nonexistentgetboundsfunction(neighbourhood_name);
    map.panToBounds(neighbourhood_center[neighbourhood_name][0]);
    $('#neighbourhood h2').html('neighbourhood '+neighbourhood_name);
}
4

1 に答える 1

2

確かに他の機能が必要ですか?私の意見では、UIはぎこちなくなります。さて、ここにあります:http://jsfiddle.net/g343k/3/

KML ポリゴンに関連付けられている奇妙な「バグ」、または「機能」と呼ぶ人もいます。地域をクリックすると、マップが地域の中心に移動します。ただし、planning_district エリアの外側をクリックすると、クリックした場所ではなく、ボックスの中央にマップがパンします (Sean Mickey が FireFox 12 でテストし、クリックにパンします)。計画地区を数十の小さなボックスに細分する以外に、これを回避する方法がわかりません:( 今、計画地区へのクリックを無視するコードを書きました.

google.maps.event.addListener(neighbourhoods, 'click', function(KmlFeatureData) {
        var neighbourhood_name = KmlFeatureData.featureData.name;
    load_neighbourhood(neighbourhood_name, neighbourhoods);
    window.location = "#neighbourhood-neighbourhood "+neighbourhood_name;
    // ADDED
    // Consider what to do when this outer area is clicked
    if(KmlFeatureData.featureData.name!="planning_districts_2008") {
      map.panTo(KmlFeatureData.latLng);
    }

    });

    // LEFT OUT
    //if(typeof neighbourhood_name !== 'undefined'){
    //    load_neighbourhood(neighbourhood_name, neighbourhood_center);
    //}

    // ADDED
    google.maps.event.addListener(map, 'click', function(event) {
      map.panTo(event.latLng);
    });
于 2012-05-04T22:29:31.157 に答える