防止在谷歌地图上滚动外部地图区域 [英] Prevent scrolling outside map area on google map

查看:170
本文介绍了防止在谷歌地图上滚动外部地图区域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

实际上,我正在处理Google Maps Framework for iOS,并且我想阻止向给定区域滚动。



我一开始试图做的,实现委托方法: - (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position 并将地图位置与右/左角比较。滚动或缩放时遇到很多问题。



下面是我执行的例子:

   - (void) mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position {

if(position.target.latitude> topLat){
GMSCameraPosition * goBackCamera = [GMSCameraPosition cameraWithLatitude:topLat
longitude:position.target.longitude
zoom:position.zoom
bearing:220
viewingAngle:0];

[self.mapView animateToCameraPosition:goBackCamera];
}

if(position.target.latitude< bottomLat){
GMSCameraPosition * goBackCamera = [GMSCameraPosition cameraWithLatitude:bottomLat
longitude:position.target.longitude
zoom:position.zoom
bearing:220
viewingAngle:0];
[self.mapView animateToCameraPosition:goBackCamera];
}

if(position.target.longitude> rightLong){
GMSCameraPosition * goBackCamera = [GMSCameraPosition cameraWithLatitude:position.target.latitude
longitude:rightLong
zoom:position.zoom
bearing:220
viewingAngle:0];
[self.mapView animateToCameraPosition:goBackCamera];
}

if(position.target.longitude GMSCameraPosition * goBackCamera = [GMSCameraPosition cameraWithLatitude:position.target.latitude
longitude:leftLong
zoom:position.zoom
bearing:220
viewingAngle:0];
[self.mapView animateToCameraPosition:goBackCamera];




$ b $ p

你有没有办法更有效地处理这个问题?



PS:TopLat,RightLong ...表示上纬度和右经度等。



问候

解决方案

使用GMSCoordinateBounds(东北坐标,西南坐标)方法。
这可能有帮助
GMSCoordinateBounds类参考


Am actually dealing with the Google Maps Framework for iOS, and I want to block scrolling out side a giving area.

What I tried to do at first, implement the delegate method : - (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position and compare the map position with the right/left corners.But what I did has many issues when scrolling or zooming.

Below an exemple of my implementation :

 - (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position {  

    if (position.target.latitude > topLat) { 
        GMSCameraPosition *goBackCamera = [GMSCameraPosition cameraWithLatitude:topLat
                                                                      longitude:position.target.longitude
                                                                            zoom:position.zoom
                                                                            bearing:220
                                                                            viewingAngle:0];

        [self.mapView animateToCameraPosition:goBackCamera];
    }

    if (position.target.latitude < bottomLat) {
        GMSCameraPosition *goBackCamera = [GMSCameraPosition cameraWithLatitude:bottomLat
                                                                      longitude:position.target.longitude
                                                                           zoom:position.zoom
                                                                        bearing:220
                                                                   viewingAngle:0];
        [self.mapView animateToCameraPosition:goBackCamera];
    }

    if (position.target.longitude > rightLong) {
        GMSCameraPosition *goBackCamera = [GMSCameraPosition cameraWithLatitude:position.target.latitude
                                                                      longitude:rightLong
                                                                           zoom:position.zoom
                                                                        bearing:220
                                                                   viewingAngle:0];
        [self.mapView animateToCameraPosition:goBackCamera];
    }

    if (position.target.longitude < leftLong) {
        GMSCameraPosition *goBackCamera = [GMSCameraPosition cameraWithLatitude:position.target.latitude
                                                                      longitude:leftLong
                                                                           zoom:position.zoom
                                                                        bearing:220
                                                                   viewingAngle:0];
        [self.mapView animateToCameraPosition:goBackCamera];
    }
}

Do you no a way more efficient to deal with this?

PS: TopLat, RightLong ... mean top Latitude and Right longitude etc

Regards

解决方案

Use GMSCoordinateBounds(northeast co-ordinates, southwest co-ordinates) method. This might be helpful GMSCoordinateBounds Class Reference

这篇关于防止在谷歌地图上滚动外部地图区域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆