- 締切済み
Google Mapでオリジナルレイヤーの切り替えに関して
Google Mapでオリジナルレイヤーの切り替えに関して Google Mapの基本地図にオリジナルレイヤーを重ねて マップタイプ切り替えボタンで重ねたり消したりしたいのですが、 うまくいきません。。 <script type="text/javascript"> //<![CDATA[ var center = new GLatLng(35.6853, 139.7532); var map = new GMap2(document.getElementById("map")); var normal = new GMapType(G_NORMAL_MAP.getTileLayers(), G_NORMAL_MAP.getProjection()," ごく普通の地図"); var custom = new GMapType(tilelayer, G_NORMAL_MAP.getTileLayers(), "オリジナル"); var normalTileLayer = G_NORMAL_MAP.getTileLayers()[0]; var tilelayer = new GTileLayer(new GCopyrightCollection(), 0, 17); tilelayer.getTileUrl = function(tile, zoom) { return"test.jpg"; // 普通の地図のタイルを返す }; tilelayer.getOpacity = function() {return 0.55} // 不透明度を55%にしたものを返す map.getMapTypes().length = 0; map.addMapType(normal); // 普通の地図 map.addMapType(custom); // オリジナル map.setCenter(center, 15, custom); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.addOverlay(new GTileLayerOverlay(tilelayer)); // 新しく作ったタイルレイヤーを重ねる //]]> </script> どこがおかしいのでしょうか。。。??
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yyr446
- ベストアンサー率65% (870/1330)
実現しようとしてる事(目的)が今ひとつ解りませんが、 どこがおかしいのでしょうか。。。?? => tilelayer.getTileUrl = function(tile, zoom) { return"test.jpg"; // 普通の地図のタイルを返す }; tilelayer.getOpacity = function() {return 0.55} そんなメソッドの使い方出来ないです。読み取りだけです。 //不透明度を55%にしたものを返す =>それは不可能です。 map.addMapType(normal); // 普通の地図 冗長です。税所から普通の地図はありますです。 map.addOverlay(new GTileLayerOverlay(tilelayer)); // 新しく作ったタイルレイヤーを重ねる これも冗長です。maptypeで追加してるから、オーバーレーとして重ねる必用ないです。 ※自分でタイルレイヤーを用意するんじゃなく、Google提供のレイヤーの重ね合わせの 制御をGMapTypeControl()でするのなら、下のサンプルのように出来ます。 (API Ver2系です。試す時は全角空白は半角空白に差し替えてね) サンプル(G_HYBRID_MAPのレイヤー1(地図部分)にG_PHYSICAL_MAPのレイヤー0 (地形部分)を重ねあわせたオリジナルのMAPTYPE(CUSTOM)をMapTypeControlに追加 して、基本地図以外のマップタイプを消去) <script type="text/javascript" charset="utf-8"> <!-- function load(){ var center = new GLatLng(35.6853,139.7532); var map = new GMap2(document.getElementById("map")); var normallayer = G_HYBRID_MAP.getTileLayers()[1]; var customlayer = G_PHYSICAL_MAP.getTileLayers()[0]; var custom = new GMapType([customlayer,normallayer], G_NORMAL_MAP.getProjection(), "オリジナル"); map.removeMapType(G_SATELLITE_MAP); map.removeMapType(G_HYBRID_MAP); map.addMapType(custom); // オリジナル map.setCenter(center,10,custom); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); } </script> </head> <body onload="load();" onunload="GUnload();"> <div id="map" style="width:800px; height:600px; border:2px solid black;"></div> </body>