藤澤です。 #斜めにHTMLとjsファイルを辿っただけですが…
Hiroshi Miura wrote: > > あわせて、現在Japanサイトの地図表示 > http://www.openstreetmap.jp/showmap > ですが、permalinkが正常に動作していません。 > > これについて、何とかしたいのですが、 > JavaScriptに詳しい方の応援をいただけるとうれしいと > おもいます。 本家の http://www.openstreetmap.org/javascripts/site.js/1208610930 に相当するjavascriptファイルが抜けているのではないでしょうか。 中身がupdatelinks()関数で始まっているものです。 updatelinks()関数で、idがpermalinkanchorの中身を書き換えている ように見えます。 機能すればなんでもよいのであれば、以下のように、showmapで定義されている init()関数を変更して、3つほど関数を追加すれば機能するかと思います。 あと、permalinkのリンク先は、/ではなく/showmapに変更する必要が あります。 //ここから function init() { map = new OpenLayers.Map("map", { controls:[ new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.Attribution()], maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34), maxResolution:156543.0399, units:'meters', projection:"EPSG:900913"} ); var layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik"); var layerTah = new OpenLayers.Layer.OSM.Osmarender("[メールアドレス保護]"); map.addLayers([layerTah,layerMapnik]); //map.addLayer(layerTah); map.addControl(new OpenLayers.Control.LayerSwitcher()); var args = getArgs(location.href); if(args){ lon = args["lon"]; lat = args["lat"]; zoom = args["zoom"]; } var lonLat = lonLatToMercator(new OpenLayers.LonLat(lon, lat)); map.setCenter (lonLat, zoom); map.events.register("moveend", map, setPermaLink); setPermaLink(); } function setPermaLink(){ var lonlat = map.getCenter(); var zoom = map.getZoom(); node = document.getElementById("permalinkanchor"); if (node) { var args = getArgs(node.href); if(!args) args = new Object(); args["lat"] = Math.atan(Math.exp((lonlat.lat*180/20037508.34)*Math.PI/180))*360/Math.PI-90; args["lon"] = lonlat.lon * 180/20037508.34; args["zoom"] = zoom; node.href = setArgs(node.href, args); } } function getArgs(url) { var args; var querystart = url.indexOf("?"); if (querystart >= 0) { args = new Object(); var querystring = url.substring(querystart + 1); var queryitems = querystring.split("&"); for (var i = 0; i < queryitems.length; i++) { if (match = queryitems[i].match(/^(.*)=(.*)$/)) { args[unescape(match[1])] = unescape(match[2]); } else { args[unescape(queryitems[i])] = null } } } return args; } function setArgs(url, args) { var queryitems = new Array(); for (arg in args) { if (args[arg] == null) { queryitems.push(escape(arg)); } else { queryitems.push(escape(arg) + "=" + escape(args[arg])); } } return url.replace(/\?.*$/, "") + "?" + queryitems.join("&"); } //ここまで それと、divタグでid="map"が2箇所にあるので、下の方の permalinkを囲っている方はとってしまった方がよいかと思います。 > > OpenLayersをいじってみたい方、いましたら > 教えてください。管理者権限を付与するので、 > サイトの地図を行けてる風にしていただけると > うれしいです。 > いけてる風かどうかわかりませんが、私は試しに手元のgpsdriveでの mapnikのレンダリングで、trunk/primary/secondaryの道番号アイコンを 日本の形(丸まった逆三角形と六角形)に変えてみています。 アイコンファイルを用意して、osm.xmlを一部 書き換えるだけなので比較的簡単にできました。 -- @@@@@ 藤澤 公也 / Kimiya FUJISAWA @// @@ mailto:[メールアドレス保護] @-O-O-@ work:[メールアドレス保護] \ ^ / mixi ID:10397871 http://www.techstrom.org/ _______________________________________________ Talk-ja mailing list Talk-ja@openstreetmap.org http://lists.openstreetmap.org/cgi-bin/mailman/listinfo/talk-ja