0
我正在使用Google本地搜索進行一些地理編碼,並且需要能夠在頁面上設置Google Maps API對象的視口。計算Google地圖的視口?
現在這很好,如果谷歌本地搜索已返回給我一個很好的觀點,因爲它爲郵政編碼或街道,但如果我把例如酒吧的名字。返回的視口非常大,因爲本地搜索找到了很多匹配,但返回的效果最好。
我想計算在這種情況下我自己的視口,我在下面的方式這樣做:
result.Centre = new LatLon(double.Parse(lat),double.Parse(lon));
result.Span = new LatLon(0.006295d, 0.008407d);
string viewport = "{{\"center\":{{\"lat\":\"{0}\",\"lng\":\"{1}\"}},\"span\":{{\"lat\":\"{2}\",\"lng\":\"{3}\"}},\"sw\":{{\"lat\":\"{4}\",\"lng\":\"{5}\"}},\"ne\":{{\"lat\":\"{6}\",\"lng\":\"{7}\"}}}}";
//Calculate the south west by taking half the span and adding it to the centre
double swLat = result.Centre.Latitude + (result.Span.Latitude/2);
double swLon = result.Centre.Longitude + (result.Span.Longitude/2);
//and northeast corners by taking half the span and subtracting from the centre
double neLat = result.Centre.Latitude - (result.Span.Latitude/2);
double neLon = result.Centre.Longitude - (result.Span.Longitude/2);
//Fingers crossed :)
result.ViewPortJSON = string.Format(viewport, result.Centre.Latitude, result.Centre.Longitude,result.Span.Latitude, result.Span.Longitude, swLat, swLon,neLat, neLon);
問題是,我得到一些有效的JSON但谷歌地圖會放大右出,所以我可以看到整個世界。在前端使用相同的代碼,就好像谷歌給了我視口,所以我不明白是怎麼回事。
任何想法?我的計算錯了嗎?我已經嘗試了整個跨度(即假設它已經是一個半徑)並且具有相同的效果。
在此先感謝。
沒錯!呃,我在考慮X和Y而不是經緯度。謝謝 :-) – 2010-03-07 19:06:08