快速在地图上添加 MKTileOverlay

Posted

技术标签:

【中文标题】快速在地图上添加 MKTileOverlay【英文标题】:Add MKTileOverlay on map in swift 【发布时间】:2015-08-05 12:05:51 【问题描述】:

在执行期间,图像在整个地图中重复。 我还可以指定一个 UIImage 来代替 URLTemplate?

我在某个特定位置添加了叠加图像。正好在当前位置。

谢谢

这是我的代码:

import UIKit
import MapKit


class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate 

    @IBOutlet weak var mapView: MKMapView!

    let locationManager = CLLocationManager()

    var latitude: CLLocationDegrees = 0.0
    var longitude: CLLocationDegrees = 0.0

    var cnt: Int = 0


    override func viewDidLoad() 
        super.viewDidLoad()

        self.mapView.delegate = self

        self.mapView.mapType = MKMapType.Satellite

        //Map centre
        let centre = CLLocationCoordinate2D(latitude: 40.8325769,
            longitude: 14.318884400000002)

        //Declare span of map
        let span = MKCoordinateSpan(latitudeDelta: 0.05,
            longitudeDelta: 0.05)

        //Set region of the map
        let region = MKCoordinateRegion(center: centre, span: span)
        self.mapView.setRegion(region, animated: false)
        self.mapView.regionThatFits(region)



        var template = "http://tile.openstreetmap.org/0/0/0.png"

        let carte_indice = MKTileOverlay(URLTemplate:template)


        carte_indice.geometryFlipped = true

        carte_indice.canReplaceMapContent = false


        self.mapView.addOverlay(carte_indice)



    



    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

    func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer!
    

            if overlay is MKTileOverlay
            
                var renderer = MKTileOverlayRenderer(overlay:overlay)

                renderer.alpha = 0.8

                return renderer
            
            return nil
    


【问题讨论】:

【参考方案1】:

我认为模板url必须是:

var template = "http://tile.openstreetmap.org/z/x/y.png"

问候。

【讨论】:

【参考方案2】:

不太明白你想用这些图块实现什么。

虽然,您可以通过以下方式获取本地资源的 NSURL:

if let tileUrl = NSBundle.mainBundle().URLForResource(ZZZ, withExtension: XXX, subdirectory: YYY)

或者如果您需要为不同的 X/Y/Z/比例动态提供图块,您可以继承 MKTileOverlay 并覆盖 loadTileAtPath 方法。

【讨论】:

我必须在地图上添加一张图片。我有一个 UIIMage 对象,我必须在 MKTileOverlay 中对其进行转换。 某个特定位置的叠加图像?还是带有图片的图钉之类的东西? 某个特定位置的叠加图像。正好在当前位置

以上是关于快速在地图上添加 MKTileOverlay的主要内容,如果未能解决你的问题,请参考以下文章

在地图应用程序中快速获取路线

怎么设置高德地图位置

如何使用谷歌方向 API 在苹果地图上快速绘制路线?

快速呈现用户位置

如何在谷歌地图上快速更改我的位置按钮的位置

利用Python快速绘制海报级别地图