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

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

【问题讨论】:

    标签: objective-c xcode iphone-sdk-3.0 google-maps uiwebview


    【解决方案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 添加为字符串。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多