标签: mapkit

iPhone MapKit Framework缓存谷歌地图供离线使用

我正计划在iPhone上徒步旅行的地图项目.

由于移动网络可能无法覆盖徒步旅行区域.因此,有必要预先缓存该区域的地图(Google).

1)MapKit Framework是否支持在本地缓存iPhone上的Google Map?2)MapKit Framework可以支持在GPS期间使用离线地图吗?

谢谢.

iphone mapkit ios4

6
推荐指数
2
解决办法
3205
查看次数

检测用户何时滚动MKMapView一定距离?

我想确定用户是否滚动了超过地图的某个百分比,然后禁用地图从用户位置居中(类似于地图应用的工作方式).

我不确定使用哪种方法.

我认为创建一个矩形并查看矩形是否包含当前中心点是很简单的,但是我必须以IOS 3为目标,因此我无法使用许多较新的Mapkit apis.

我已尝试使用CLLocation,并在当前mapcenter和用户位置之间使用distanceFrom,但我试图弄清楚该距离是否为某个百分比.

iphone mapkit

6
推荐指数
1
解决办法
9742
查看次数

CoreLocation的准确度测量有多准确

我一直在测试CoreLocation各个方面的准确性,并惊讶地发现传递给CLLocationMangerDelegate方法的新旧位置提供的准确性值:( void)locationManager:didUpdateToLocation:fromLocation本身非常不准确.

走一段路面(沿着一段道路,沿着建筑物的一侧)我发现,虽然CLLocationManager声称它提供的CLLocations具有5米的水平精度,实际上MKUserAnnotation显示的位置是任何高达距离我所知道的位置30米(通常显示为一排建筑物的对面).这表明精确度读数本身并不准确.CLLocationManager告诉我它的坐标精确到5米以内但实际上多达30米.

为了澄清,这不是缓存/时间戳问题它在某些领域是可重复的,而不是随着时间的推移而改进的东西.

还有其他人遇到过这个问题吗?

iphone gps core-location mapkit ios

6
推荐指数
2
解决办法
2959
查看次数

如何:在MKMapView上显示MKOverlay

我需要在地图上显示MKOverlay,但无法让它实际显示.

我正在关注Apple的位置感知编程指南中示例,并且不会显示叠加层.任何帮助将不胜感激,这是我制作的第一个iPhone应用程序,所以我可能会遗漏一些简单的东西.

NavViewController.h

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

@interface NavViewController : UIViewController <MKMapViewDelegate> {
}
@property (weak, nonatomic) IBOutlet MKMapView *mapView;

@end
Run Code Online (Sandbox Code Playgroud)

NavViewController.m

#import "MSUNavViewController.h"
#import <CoreLocation/CoreLocation.h>

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
    if ([overlay isKindOfClass:[MKPolygon class]])
    {
        MKPolygonView* aView = [[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay];

        aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2];
        aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7];
        aView.lineWidth = 3;

        return aView;
    }
    return nil;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Define an overlay that covers Colorado.
    CLLocationCoordinate2D …
Run Code Online (Sandbox Code Playgroud)

mapkit ios mkoverlay ios5

6
推荐指数
1
解决办法
5472
查看次数

如何将新的Google地图应用与ios应用集成

谷歌地图现在可以在Appstore for IOS 6中使用.我有一个应用程序利用MAPKIT和WebView显示使用谷歌网络服务的驾驶方向.为了在Native Apple MAP应用程序中显示Route,我使用类似于此的代码.

MKMapItem *mapItem = [[MKMapItem alloc]initWithPlacemark:place];
NSDictionary *options = @{
MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving
};
[mapItem openInMapsWithLaunchOptions:options];
Run Code Online (Sandbox Code Playgroud)

我想在用户设备上安装的New Google MaP App中向用户显示Route,将其UI嵌入我应用中的View中.

请指导我.

google-maps mapkit ios ios6 google-maps-sdk-ios

6
推荐指数
2
解决办法
9212
查看次数

为 MapKit 中的每个注释添加 Id

我需要为地图中的每个注释添加一个 Id 以通过单击注释中的信息按钮打开新的视图控制器,我的问题是准备和执行 segue,我创建了它,但我不知道如何将 id 传递给赛格。

我为注释创建了子类来存储来自 JSON 的 ID

那是我的代码的一部分:

从 JSON 获取所有数据:

for location in self.locations {

  let annotation:MyAnnotation = MyAnnotation()
  annotation.title = location["truck_name"] as? String
  annotation.customTruckId = location["truck_id"] as? String
  annotation.coordinate = CLLocationCoordinate2D(latitude: (location["coor_x"] as! NSString).doubleValue, longitude: (location["coor_y"] as! NSString).doubleValue)
  self.AllMapView.addAnnotation(annotation)

  }
Run Code Online (Sandbox Code Playgroud)

我创建的子类:

class MyAnnotation : MKPointAnnotation {
    var customTruckId : String?
}
Run Code Online (Sandbox Code Playgroud)

问题就在这里:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if (segue.identifier == "ShowTruckFromMap") {

            let des_VC = segue.destination as! TruckDetailsVC

            des_VC.truck_id = "How to …
Run Code Online (Sandbox Code Playgroud)

annotations mapkit swift

6
推荐指数
1
解决办法
1147
查看次数

iOS 11 集群成员

当点击地图上的集群注释时,我试图获取集群的所有成员(iOS 11)。有谁知道怎么获得吗?

以下代码添加了集群:

    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
        if #available(iOS 11.0, *) {
            if annotation is MKClusterAnnotation {
                var anView = mapView.dequeueReusableAnnotationView(withIdentifier: "cluster")
                return anView
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

当点击集群时无法获得集群成员

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
    if #available(iOS 11.0, *) {
        if view.annotation is MKClusterAnnotation {
            print(view.clusteringIdentifier)
            print(view.reuseIdentifier)

            //*** Need array list of annotation inside cluster here ***
         } else {

         }
     }
}
Run Code Online (Sandbox Code Playgroud)

获取集群成员的唯一方法是:

func mapView(_ mapView: MKMapView, clusterAnnotationForMemberAnnotations memberAnnotations: [MKAnnotation]) -> MKClusterAnnotation …
Run Code Online (Sandbox Code Playgroud)

mapkit swift

6
推荐指数
1
解决办法
1118
查看次数

您可以在 React Native 地图中自定义当前位置标记吗?

我想使用自定义标记图像而不是脉冲蓝点 - 有没有办法在使用用于 ios 的苹果地图和用于 Android 的谷歌地图的反应原生地图中自定义它?

google-maps mapkit react-native-maps

6
推荐指数
1
解决办法
8294
查看次数

当位置服务未获得许可时,MKUserTrackingButton 会变成一个微调器

我已MKUserTrackingButton在地图视图中将 Apple 的新功能添加到我的应用程序中。当用户先前已授予使用位置服务的许可(例如CLAuthorizationStatus.authorizedWhenInUse)时,它可以正常工作。

MKUserTrackingButton 默认

但是,当用户拒绝权限或权限状态未确定时,用户跟踪按钮会变成活动指示器(又名微调器)并且永不停止旋转。

MKUserTrackingButton 未经许可旋转

相反,我想像在 Apple Maps 应用程序中一样显示 iOS 权限警报,或者至少显示某种警报,以向用户提示为什么它不起作用。当然,我也希望活动指示器停止并返回默认的“指南针”图标。

不幸的是,MKUserTrackingButton它不是一个 sublass,UIButton所以我不能向它添加任何目标,而且似乎没有 API 来改变按钮的视觉状态。

知道如何做到这一点吗?

mapkit mkmapview cllocationmanager ios mkuserlocation

6
推荐指数
0
解决办法
421
查看次数

MapKit 错误:在渲染其 SwiftUI 内容时,NSHostingView 正在重新布局

我已经使用MapKit实现了 Apple SwiftUI 教程的略微更改版本。

当我运行它时,我收到错误消息并调整我得到的相应视图的大小:

[SwiftUI] NSHostingView is being laid out reentrantly while rendering its SwiftUI content. This is not supported and the current layout pass will be skipped.

查看调用代码:

    MapView(coordinate: location?.coordinates)
        .frame(minHeight: 200)
        .overlay(
            GeometryReader{
                proxy in
                Button("Open in Maps") {
                    if (self.location?.coordinates != nil){
                        let destination = MKMapItem(placemark: MKPlacemark(coordinate: self.location!.coordinates))
                        destination.name = "the car"
                        destination.openInMaps()
                    }
                }
                .frame(width: proxy.size.width, height: proxy.size.height, alignment: .bottomTrailing)
                .offset(x: -10, y: -10)
            }
    )
Run Code Online (Sandbox Code Playgroud)

地图视图结构:

import SwiftUI
import MapKit

/// a …
Run Code Online (Sandbox Code Playgroud)

macos cocoa mapkit swift swiftui

6
推荐指数
1
解决办法
568
查看次数