使用带有缩放功能的 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>
然后将您的UIWebView
s 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 地图的主要内容,如果未能解决你的问题,请参考以下文章