近所の人がYandex.Mapsとどのように友達になったか

私たちはどの国に住んでいますか? そうです-ロシアで。

では、なぜGoogleからの外国の地図に縛られているのでしょうか?

私たちはロシアに住んでいて、彼女にはカードがあります。 親Relative。 これらはYandexのカードです。



現在、 eNeighborsはYandex.Mapsと友達です。 サイトにアクセスすると、家やコテージを見ることができ、必要に応じてGoogleマップと比較できます。



Yandex.Mapsへの移行は、愛国的な理由だけでなく、:)

場合によっては、ロシアでのGoogleの報道は理想からはほど遠いものです。 同時に、Yandex.Mapsが間違いなく優れているとは言えません。 ただし、Googleマップに欠けているものが表示される場合があります。 質の高いサイトのほぼ鏡像の好奇心の強い例を次に示します。

画像 画像



Googleを既にお持ちの場合は、サイトでYandexを使用する方法についてお読みください。





YandexとGoogleの違い


1. GLatLngおよびYMaps.GeoPointは、それぞれGおよびZで使用されます。

あるシステムから別のシステムへの移行は簡単です。

function G2YA(a){return new YMaps.GeoPoint(a.lng(),a.lat())}

function YA2G(a){return new GLatLng(a.getLat(),a.getLng());}








2. Yandexは別の投影標準を使用し、epsgが少し狭くなっています:3395( 詳細



3.一部の関数は単に異なる方法で呼び出されますが、一部は少し異なる方法で動作します。



YandexとGoogleマップを接続する方法は?


オプション-プロキシを使用する( クラブ内のプロキシの説明

要点は簡単です-GoogleとYandexの両方をインターフェースでラップします。

私たちの場合、それは少し簡単でした-座標への集中呼び出しがあり、SETは1か所にあり、プロキシを介してGETを許可しました。

次のようなことが判明しました。



map.getPane=function(a){return 0;}

map.checkResize=function(){this.redraw(true);}

map.disableScrollWheelZoom=function(){this.disableScrollZoom();}

map.enableScrollWheelZoom=function(){this.enableScrollZoom();}

map.fromLatLngToDivPixel=function(a){ YA=G2YA(a);return this.converter.coordinatesToMapPixels(YA);}

map.fromContainerPixelToLatLng=function(a){ return YA2G(geo_map.converter.localPixelsToCoordinates(GP2YA(a)));}

map.getMapCenter=function(){return YA2G(this.getCenter());}

map.setMapType=function(a)

{

if(a==G_NORMAL_MAP )this.setType(YMaps.MapType.MAP);

if(a==G_HYBRID_MAP )this.setType(YMaps.MapType.HYBRID);

if(a==G_PHYSICAL_MAP )this.setType(YMaps.MapType.SATELLITE );

}



map.getCurrentMapType=function()

{

a=this.getType();

if(a==YMaps.MapType.MAP )return G_NORMAL_MAP;

if(a==YMaps.MapType.HYBRID )return G_HYBRID_MAP;

if(a==YMaps.MapType.SATELLITE)return G_PHYSICAL_MAP;

}



YMaps.GeoBounds.prototype.getSouthWest=function(){ return YA2G(this.getLeftBottom());}

YMaps.GeoBounds.prototype.getNorthEast=function(){ return YA2G(this.getRightTop());}









Googleのマップシフトイベントは次のように設定されています

GEvent.addListener(geo_map, "moveend", map_moveend_event );







Yandexでは異なります-2つのイベントに参加する必要があります。



YMaps.Events.observe(map, map.Events.Update,map_moveend_event);

YMaps.Events.observe(map, map.Events.MoveEnd,map_moveend_event);








eNeiglesのマーカーと「バルーン」は使用しませんが、オーバーレイを使用します。これにより、マップ上に何でも表示できます。

これを行う方法の学習に興味がある場合、 kasheyはそれをより詳細に、しかし別のトピックで説明できます。



オーバーレイGとIで友達を作る方法は?


繰り返しますが、すべてが非常に簡単です。



GOverlay.prototype.onAddToMap = function(map,to)

{

this.initialize(map);

to.appendChild(this.div_);

this.onMapUpdate(map);

return obj;

}



GOverlay.prototype.onRemoveFromMap = function(map)

{

return this.remove();

}



GOverlay.prototype.onMapUpdate = function(map)

{

this.redraw(true);

}









onAddToMap関数は、任意のデータを配置できるdiv(_div)を作成します。

Gカードの場合、マップへの追加は、コマンドを使用して初期化関数で実行されます。

if(GetMap().getPane(defmappane))

GetMap().getPane(defmappane).appendChild(div);







Iカードの場合、このコマンドは機能しません。

原則として、GMarkerは同様の方法でダウンロードでき、「機能する」か、逆関数を記述します。 その後、美しいYandex.BalunasはGカードで獲得します...



カードの新しいバージョンを起動するのに十分な説明されたパッチがありました。 おそらく私たちは何かを考慮しなかったかもしれませんが、テストの1週間の間、不具合は発生しませんでした。



All Articles