【问题标题】:Determine southwest and northeast point for bounds in Google maps在 Google 地图中确定边界的西南和东北点
【发布时间】:2010-09-01 02:42:10
【问题描述】:

我在谷歌地图上有一组标记(比如 6 个)。现在我只想放大到某个级别,该级别可以很好地显示所有标记,因为我使用了 getBoundsZoomLevel()。

问题是我不知道如何从经纬度数组中确定边界。

谁能告诉我如何确定边界的西南和东北点???

我找到了这篇文章,但我无法理解它,因为我不知道 DIST 是什么... SouthWest and NorthEast Points

【问题讨论】:

  • 所以你想限制用户放大到所有标记都不可见的点?
  • DIST 是您想要围绕您的点的距离或半径。它基本上会决定你的矩形有多大。

标签: google-maps


【解决方案1】:

看看 LatLngBounds http://code.google.com/apis/maps/documentation/javascript/reference.html#LatLngBounds

当您添加新的 LatLngs 时,您可以调用 extend(point:LatLng),然后边界将包含您添加的所有 LatLngs。

【讨论】:

  • 您好,感谢您的回复。添加标记时,我已经使用了扩展。我想要做的是当用户选择 2 个或 3 个或更多标记时,我想以包含所有选定标记的方式缩放地图。所以为此我需要从纬度和经度数组中确定东北点和西南点
  • 因此,创建一个新的 LatLngBounds 对象并将用户选择的标记添加到其中。
【解决方案2】:

这是在 Objective C 中,希望逻辑对你有所帮助:

-(NSArray *)calculateLongLatDegreesInMeters:(CLLocationDegrees)latitude {
float lat = M_PI * latitude / 180;

// Constants for calculating lengths

float m1 = 111132.92;

float m2 = -559.82;

float m3 = 1.175;

float m4 = -0.0023;

float p1 = 111412.84;

float p2 = -93.5;

float p3 = 0.118;

float eq1 = m1 + (m2 * cos(2 * lat)) + (m3 * cos(4 * lat));

float latitudeDegreeInMeters = eq1 + (m4 * cos(6 * lat));

float longitudeDegreeInMeters = (p1 * cos(lat)) + (p2 * cos(3 * lat)) +    (p3 * cos(5 * lat));

NSString *latDegInMtr = [NSString stringWithFormat:@"%f",latitudeDegreeInMeters];
NSString *lonDegInMtr = [NSString stringWithFormat:@"%f",longitudeDegreeInMeters];


NSArray *arr = [NSArray arrayWithObjects:latDegInMtr,lonDegInMtr, nil];



return arr; //(latitudeDegreeInMeters, longitudeDegreeInMeters)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2013-02-24
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多