我正在使用谷歌本地搜索进行一些地理编码,需要能够在页面上设置谷歌地图api v3对象的视区。
现在,如果谷歌本地搜索给我返回了一个好的视区,就像对邮政编码或街道一样,但如果我输入了一个酒吧的名称,这就很好了。返回的视区非常大,这是可以假定的,因为本地搜索发现了许多匹配项,但返回的是最好的。
在这种情况下,我想计算自己的视区,并按以下方式进行计算:
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,但是谷歌地图会缩小,这样我就能看到整个世界。同样的代码在前端被使用,就好像谷歌给了我一个视区,所以我不明白发生了什么。
有什么想法吗?我计算错了吗?我试过用同样的效果处理整个跨度(即假设它已经是一个半径)。
事先谢谢。