現在、Mono4Droidを使用してマップアプリを実装しており、WebViewを使用して自分のタイルサーバーによって提供されるマップを表示しています。OpenLayersを使用してこのマップを表示していますが、テキストレイヤーを使用してカスタムPOIを表示したいと思います。残念ながら、マップは90013投影を使用しています。
map = new OpenLayers.Map ("map", {
controls:[
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.Permalink(),
new OpenLayers.Control.ScaleLine({geodesic: true}),
new OpenLayers.Control.Permalink('permalink'),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.Attribution()],
//maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
maxResolution: 156543.0339,
numZoomLevels: 19,
units: 'm',
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:900913")
} );
したがって、TextLayerによって提供されるマークを表示する場合は、正しい形式の座標を使用する必要があります。マップを中央に配置するのは簡単です。
var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.setCenter (lonLat, zoom);
しかし、TextLayerに対してこの変換を自動的に行うにはどうすればよいですか?よく知られているEPSG4326に準拠した緯度経度の値をテキストレイヤーデータファイル(緯度経度の列)に入れたいのですが、900913に準拠した値(現在動作させるために行っていること)ではありません。
OpenLayersにテキストレイヤーの座標をマップで使用されている形式に自動的に変換させる方法はありますか?たぶん、onShowのようにオーバーライドするコールバック関数?
ご協力いただきありがとうございます!そうしないと、自分で緯度経度の値を変換し、計算された値をテキストファイルに入れる必要があります。これにより、パフォーマンスが低下します...