Я спрашиваю вас, потому что я боролся уже несколько дней;Я искал Интернет и stackoverflow и ничего не нашел.
Мне нужно разместить маркеры / круги / что угодно довольно точно на карте.Однако кажется, что я могу нарисовать их только на сетке, степень точности которой зависит от того, где я нахожусь.Поэтому их местоположение недостаточно точное.
Я использую Wt (C ++), но, похоже, это не является частью проблемы.Я написал код, который рисует массив 20 * 20 кругов, координаты которых расположены на одинаковом расстоянии.Я не получаю те же результаты, будь я в Париже или в Нью-Йорке.
В Париже: (не могу опубликовать изображения, потому что это мой первый вопрос) http://img818.imageshack.us/img818/7841/parism.png
В Нью-Йорке: http://img193.imageshack.us/img193/9822/newyorkq.png
В Париже я получаю точность по долготе, но не по широте.В Нью-Йорке я не могу получить точность ни по широте, ни по долготе.
Вот код, который я использовал:
/*Choose between both*/
double centerLat = 40.714468; double centerLng = -74.005966;//New-York
//double centerLat = 48.854607; double centerLng = 2.347126;//Paris
/*Other parameters*/
double lngMargin = 0.000400;
double latMargin = 0.000400;
int granularity = 20;
int i,j;
WVBoxLayout* layout = new WVBoxLayout();
WColor::WColor myBlue = WColor::WColor(0,0,255,255);
WColor::WColor myRed = WColor::WColor(255,0,0,255);
WColor::WColor myTransparent = WColor::WColor(0,0,0,0);
WGoogleMap::Coordinate coordArray[granularity][granularity];
/* Creating and configuring the map */
WGoogleMap *map = new WGoogleMap(WGoogleMap::Version3);
WGoogleMap::Coordinate centerCoord = WGoogleMap::Coordinate(centerLat,centerLng);
setLayout(layout);
resize(height,width);
map->setCenter(centerCoord,19);
map->setMapTypeControl(WGoogleMap::DefaultControl);
map->enableScrollWheelZoom();
map->addCircle(centerCoord,2,myBlue,2,myTransparent);
/* Here is the loop that draws the circles */
for(i=0 ; i<=granularity-1 ; i++){
for(j=0 ; j<=granularity-1 ; j++){
coordArray[i][j] = WGoogleMap::Coordinate(centerLat + beforeOrAfterTheCenter_Lat * (latMargin/granularity) * i,
centerLng + beforeOrAfterTheCenter_Lng * (lngMargin/granularity) * j);
map->addCircle(coordArray[i][j],1,myRed,2,myTransparent);
}
}
Код должен работать нормально.Есть ли у вас какие-либо понятия о том, что я могу сделать, чтобы получить больше точности?Это известная проблема?
Большое спасибо за любую помощь, которую вы можете оказать,
L.