1

これまで取り組んできた Google マップの作業をさらに進めて戻ってきました。状況は次のとおりです。

バージニアの地図を持っています。マーカーが含まれますが、複数の人がマーカーを追加/削除/編集できるようにする必要があります。その結果、「My Places」で Google マップを作成し、結果の KML ファイルを API にロードしているマップにインポートしています。

また、バージニア州をより際立たせるために、隣接する州の上にポリゴンを描画し、その上に不透明度 75% の白いレイヤーを追加して、隣接する州を「白く」しようとしています。

ただし、KML レイヤーのマーカーが境界状態をカバーするポリゴンに「重なる」と、不透明なポリゴンがレイヤーを覆い、マーカーをクリックできなくなるという問題が発生しました。十分にズームインすると、マーカーをクリックできますが、元のズームからマーカーをクリックできるようにしたいです。

最初にマーカーを作成してから KML を追加し、最初に KML を実行してからポリゴンを描画しようとしましたが、問題ではないようです。ここでソリューションのバリエーションを試してみました:多角形の描画が Google マップ API v3で完了したときの処理 リスナー イベント内に KML レイヤーを追加するトリガーを配置しましたが、サイコロはまだありません。

Google で検索しても、役に立ちそうなものは何も見つかりませんでした。これがまだレイヤーの順序に問題があるのか​​ 、順序に関係なくポリゴンが何らかの形でKMLレイヤーを「オーバーライド」しているのか、またはKMLマーカーにとどまるように明示的に指示する方法があるのか​​ どうかはわかりませんポリゴンの上。

まず、レイヤーを描画するために現在使用しているメインコードは次のとおりです。

function initialize() {
  var mapOptions = {
    zoom: 7,
    center: new google.maps.LatLng(38, -79.5),
    disableDefaultUI: true,
    mapTypeId: google.maps.MapTypeId.TERRAIN
  }
  var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

  borderingStates(map);

  var participantsLayer = new google.maps.KmlLayer('https://maps.google.com/maps/ms?msa=0&msid=204048902337864904598.0004cc332e8034251c1db&ie=UTF8&ll=37.668046,-80.289717&spn=1.959603,5.642338&output=kml',{preserveViewport:true});

  google.maps.event.addListener(map,'idle', function() {
  participantsLayer.setMap(map);
 });

}

function loadScript() {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src = "https://maps.googleapis.com/maps/api/js?key=abc.def&sensor=false&callback=initialize";
  document.body.appendChild(script);
}

window.onload = loadScript;

次に、ポリゴンを描画するために使用しているコードの例を次に示します。これは、上記の borderingStates 関数を呼び出すと発生します。

//Delaware
 DEpoints = [

new google.maps.LatLng(39.7188, -75.7919),
new google.maps.LatLng(39.5210, -75.7837),
...
new google.maps.LatLng(39.8296, -75.6477),
new google.maps.LatLng(39.7199, -75.7906)
];

  // Construct the polygon
  var Delaware = new google.maps.Polygon({
    paths: DEpoints,
    fillColor: invisColor,
    strokeOpacity: 0,
    fillOpacity: .75
  });

  Delaware.setMap(map);

そして、ポリゴンを描画する州ごとにそれを繰り返します.6つか7つあると思います.

おそらく、Google マップが本質的にポリゴンと KML レイヤーをどのように扱うか以外に、コードが機能しない原因が特にあるとは言えません。

4

2 に答える 2

1

KmlLayer (または FusionTablesLayer) でポリゴンを作成することもお勧めします。レイヤーをマップに追加する順序によって、レイヤーの順序を制御できます (最初のレイヤーが下になります)。ネイティブの Google Maps API v3 ポリゴンは常にレイヤーの上に表示されると思います。他のオプションは、ポリゴンを「クリック不可」にすることです(クリック可能:false)[これが機能するかどうかは不明]。

于 2012-10-24T18:35:23.323 に答える