• 締切済み

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> どこがおかしいのでしょうか。。。??

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

実現しようとしてる事(目的)が今ひとつ解りませんが、 どこがおかしいのでしょうか。。。?? => 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>