これまで取り組んできた 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 レイヤーをどのように扱うか以外に、コードが機能しない原因が特にあるとは言えません。