使用带有缩放功能的 UIWebView 显示 Google 地图

Posted

技术标签:

【中文标题】使用带有缩放功能的 UIWebView 显示 Google 地图【英文标题】:Show Google Maps using a UIWebView with zooming 【发布时间】:2009-10-21 07:55:46 【问题描述】:

MapKit 不支持行车路线。所以我想我可以在 webview 中显示行车方向。我在 uiwebview 中显示谷歌地图,但它显示了整个网站,我只想显示带有一些缩放的地图部分,以便它看起来像 iphone 的原始地图应用程序。另外我不知道这是否违反了苹果的人机界面指南(HIG)规则,请告诉我是否是。

【问题讨论】:

【参考方案1】:

将这样的字符串作为 NSString 加载(也许去掉换行符)。您可以使用stringWithFormat更改经纬度、缩放级别等

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript">
  function initialize() 
    var latlng = new google.maps.LatLng(35.000, 139.000);
    var myOptions = 
      zoom: 15,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
  ;
  var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  
</script>
</head>
<body onload="initialize()">
 <div id="map_canvas" style="width:100%; height:100%">
</body>
</html>

然后将您的UIWebViews html 设置为该值。它会给你一个只有地图的页面,允许你用手指滚动或放大,捏缩放,并放置一个标记。

使用它来加载 HTML:

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL

【讨论】:

我想显示行车方向,你能告诉我如何用你的代码做到这一点。我有两个纬度/经度位置,还有我应该在方法中传递什么参数到 baseURL - (void)loadHTMLString :(NSString *)string baseURL:(NSURL *)baseURL 也告诉我如果我使用这个应用程序会被苹果拒绝 这应该足以让您入门,现在您必须弄清楚如何制作带有行车路线的网页。我帮不了你。至于应用程序被苹果拒绝,这是不可能的。您提交的任何应用程序,无论是否会被接受,您都会赌一把。【参考方案2】:

给你。将它传递给一个 stringWithFormat ,其原始纬度长度为两倍,目的地纬度长度为一次,所有这些都为浮点数:

[NSString stringWithformat:..., oriLat,oriLon,oriLat,oriLon,destLat,destLon];

然后将其传递给 UIWebView

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript">

  var directionsDisplay = new google.maps.DirectionsRenderer();

  var directionsService = new google.maps.DirectionsService();

  function initialize() 
        var latlng = new google.maps.LatLng(%f, %f);
        var myOptions = 
          zoom: 15,
          center: latlng,
          mapTypeId: google.maps.MapTypeId.ROADMAP
  ;

  var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  directionsDisplay.setMap(map);
  calcRoute();
  

function calcRoute() 
  var start = new google.maps.LatLng(%f, %f);
  var end = new google.maps.LatLng(%f, %f);
  var request = 
    origin:start, 
    destination:end,
    travelMode: google.maps.DirectionsTravelMode.DRIVING
  ;
  directionsService.route(request, function(result, status) 
    if (status == google.maps.DirectionsStatus.OK) 
      directionsDisplay.setDirections(result);
    
  );



</script>
</head>
<body onload="initialize()">
 <div id="map_canvas" style="width:300px; height:300px">
</body>
</html>

【讨论】:

我该怎么做呢?我的意思是将 html 添加为字符串。谢谢

以上是关于使用带有缩放功能的 UIWebView 显示 Google 地图的主要内容,如果未能解决你的问题,请参考以下文章

在UIWebView上启用缩放/缩放

在 UIWebView 上启用缩放/捏合

黑色图块在UIWebview中以pdf缩放显示

禁用放大 UIWebView 但保留其他用户交互

ios UIWebView支持缩放

将较小的 UIWebView 显示为表单