地図情報の取得
Rogue Wave® Views Maps では、
IlvMapInfo クラスを使って地図情報をマネージャーに付加できます。このクラスは、地図座標とマネージャー座標間の座標変換のために、
IlvProjection と
IlvMapAdapter をカプセル化します。
IlvManager に付加された
IlvMapInfo を取得するには、サンプル・コードにあるように
IlvMapInfo::Get スタティック関数を使用します。
_mapInfo = IlvMapInfo::Get(manager);
都市の追加
addCities メソッドは、インポートした米国の地図上にいくつもの都市を追加します。
void
SimpleMapViewer::addCities()
{
addCity("Washington", "39D11’N", "76D51W");
addCity("New York", "40D59’N", "73D39’W");
addCity("Miami", "25D58’N", "80D02’W");
addCity("San Francisco", "37D44’N", "122D20’W");
addCity("Seattle", "47D51’N", "122D01’W");
addCity("Denvers", "39D50’N", "104D53’W");
}
addCity メソッドは最初に、表示する都市の緯度と経度を計算します。
void
SimpleMapViewer::addCity(const char* cityName,
const char* latString,
const char* longString)
{
double latitude;
IlvMaps::DMSToRadian(latString, latitude);
double longitude;
IlvMaps::DMSToRadian(longString, longitude);
IlvCoordinate c(longitude, latitude);
都市の地理座標が計算されると、次にこのメソッドは地図の _mapInfo を使ってそれらの座標をマネージャー座標に変換します。この変換は先に、選択した投影図法のデカルト座標に地理座標を効果的に変換してから、それらの座標をマネージャー単位に再変換します。投影図法座標系での座標変換にはエラーが生じやすいため、変換ステータスがテストされる点に留意してください。
IlvMapsError status = IlvMaps::NoError();
IlvPoint p;
status = _mapInfo->forward(c, p);
座標が変換され、変換プロセスでのエラーがなければ、赤いマーカーとして都市を追加します。
if (status == IlvMaps::NoError()) {
IlvMarker* marker = new IlvMarker(_container->getDisplay(),
p,
IlvMarkerFilledDiamond);
marker->setSize(4);
marker->setForeground(_container->getDisplay()->getColor("red"));
IlvManager* manager = _managerRectangle->getManager();
manager->addObject(marker, 1, IlFalse);
marker->setName(cityName);
}
Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.