将文本添加到GMSMapView-在iOS的谷歌地图上写入
我想向GMSMapView添加一些文本标签。当然,文本应该随着地图的放大和缩小而调整大小。我在Google Map SDK中没有看到文本对象。我如何做到这一点?有几点建议: 如果在放大和缩小时希望文本具有固定的像素大小,可以在将文本放入标记图像的位置添加一个标记将文本添加到GMSMapView-在iOS的谷歌地图上写入,ios,google-maps,google-maps-sdk-ios,Ios,Google Maps,Google Maps Sdk Ios,我想向GMSMapView添加一些文本标签。当然,文本应该随着地图的放大和缩小而调整大小。我在Google Map SDK中没有看到文本对象。我如何做到这一点?有几点建议: 如果在放大和缩小时希望文本具有固定的像素大小,可以在将文本放入标记图像的位置添加一个标记 如果您希望在放大和缩小时文本的大小以米为单位固定,您可以在将文本放入地面覆盖图像的位置添加地面覆盖。这是我根据@Saxon的建议提出的解决方案,它是从我的项目中复制和粘贴的,因此您必须进行修改以满足您的需要。其思想是将UILabel渲染
如果您希望在放大和缩小时文本的大小以米为单位固定,您可以在将文本放入地面覆盖图像的位置添加地面覆盖。这是我根据@Saxon的建议提出的解决方案,它是从我的项目中复制和粘贴的,因此您必须进行修改以满足您的需要。其思想是将UILabel渲染为UIImage,然后使用该图像设置GMSGroundOverlay图标。然后,它会调整大小,并且所有。GMSCoordinateBounds由一个东北点和西南点构成,因此,如果要将标签居中于某个点CenterX和CenterY,则需要按如下所示进行计算
UILabel *label = [UILabel new];
label.opaque = NO;
label.text = @"H";
label.font = [UIFont fontWithName: @"Arial-BoldMT" size: Normalize(32)];
label.textColor = [UIColor blueColor];
label.frame = CGRectMake(0, 0, Normalize(140), Normalize(140));
label.textAlignment = NSTextAlignmentCenter;
CLLocationDegrees offset = Normalize(0.03); // change size here
CLLocationDegrees southWestY = centerY - offset;
CLLocationDegrees southWestX = centerX - offset;
CLLocationDegrees northEastY = centerY + offset;
CLLocationDegrees northEastX = centerX + offset;
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(southWestY,southWestX);
CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(northEastY,northEastX);
GMSCoordinateBounds *overlayBounds = [[GMSCoordinateBounds alloc] initWithCoordinate:southWest coordinate:northEast];
GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:[self imageWithView:label]];
overlay.bearing = 0;
overlay.map = self.mapView
- (UIImage *) imageWithView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
我不认为标记图像会随着放大和缩小而调整大小,是吗?我希望文本与地图一起放大和缩小。在这种情况下,使用地面覆盖的第二个建议-这将随地图一起调整大小。我想知道规范化功能。你能详细描述一下吗?它是否用于更改地图缩放标签的大小?@KhánhBùiĐức只是我编写的一个辅助函数,用于调整iPad和iPhone的字体。请忽略这一点。