2009-10-21 7 views
4

Les itinéraires ne sont pas pris en charge dans MapKit. donc je pense que je peux montrer la direction de conduite dans un webview. Je montre google maps dans uiwebview, mais il montre tout le site Je veux juste montrer seulement la partie de la carte avec un peu de zoom afin qu'il ressemble à l'application de cartes originales de l'iphone. Aussi, je ne sais pas si cela va à l'encontre des règles du Human Interface Guidelines (HIG), dites-moi si c'est le cas.Afficher Google Maps à l'aide d'un UIWebView avec zoom

Répondre

7

Chargez une chaîne comme celle-ci en tant que NSString (en supprimant éventuellement les nouvelles lignes). Vous pouvez modifier la latitude et la longitude, niveau de zoom etc avec 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> 

Ensuite, configurez votre UIWebView de code HTML à cela. Il vous donnera une page avec juste une carte, vous permettant de faire défiler avec votre doigt ou zoomer, pincer le zoom, et placer un marqueur.

Utilisez cette option pour charger le code HTML:

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

Je veux montrer le sens de marche pouvez-vous me dire comment faire avec vos code.i ont deux endroits lat/désire ardemment, aussi ce paramètre shoul je passe dans baseURL dans la méthode - (void) loadHTMLString: (NSString *) chaîne baseURL: (NSURL *) baseURL –

+0

aussi me dire si j'utilise ce sera l'application rejetée par apple –

+0

s'il vous plaît envoyer un code d'échantillon pour cela –

4

Ici vous allez. Passez-le à travers un stringWithFormat avec deux fois l'origine lat long et une fois la destination lat long, tous comme flottant:

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

puis passer dans un 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> 
+0

comment ferais-je cela exactement? Je veux dire ajouter le html comme une chaîne. THX – MJB