J'ai une simple vue sur la rue qui travaille pour me montrer une vue sur la rue donnée une adresse: Comme vous pouvez le constater, j'ajoute un marqueur pour l'adresse sur la vue sur la rue. Ma question est que la vue de la rue est de pointe vers le nord et le marqueur est au sud. Pour une adresse non spécifique, comment puis-je désigner que la vue de rue doit pointer sur le marqueur pour l'adresse au lieu de pointer le nord par défaut? P> p>
3 Réponses :
Consultez Cet exemple . Même si c'est pour v2, vous pouvez réutiliser le code. Fondamentalement, vous devrez appeler ComputerAngle (MarkerLatlng, StreetviewPanoTlng) et définir la berce de Pano de la rue à la valeur renvoyée.
function computeAngle(endLatLng, startLatLng) { var DEGREE_PER_RADIAN = 57.2957795; var RADIAN_PER_DEGREE = 0.017453; var dlat = endLatLng.lat() - startLatLng.lat(); var dlng = endLatLng.lng() - startLatLng.lng(); // We multiply dlng with cos(endLat), since the two points are very closeby, // so we assume their cos values are approximately equal. var yaw = Math.atan2(dlng * Math.cos(endLatLng.lat() * RADIAN_PER_DEGREE), dlat) * DEGREE_PER_RADIAN; return wrapAngle(yaw); } function wrapAngle(angle) { if (angle >= 360) { angle -= 360; } else if (angle < 0) { angle += 360; } return angle; }
Avoir le même problème ici. Cette réponse fonctionne dans l'exemple lié, mais ne résout pas le problème de l'OP. Le marqueur et le panorama sont définis sur la même position ( résultats [0] .geometry.location code>), donc
ComputerANGle code> retourne toujours
0 code>. Pourtant, sur le panorama réel, le marqueur est affiché pas exactement où la caméra est (qui est au milieu de la route), mais sur un côté de la route, contre un bâtiment réel.
Cela a également été demandé ici: groups.google.com/group/google-maps-js-api-v3/browse_thread/ ... avec une réponse pointant vers un exemple de travail à: GEOAPIS.Appot.com/agdnzw9hcglzchmleGTFEGFTCGXLQ29KZRJRIQIM
La raison en est que la vue de la rue est, par défaut, la direction était confrontée lorsque l'image a été tournée (aller). Vous devez obtenir l'emplacement du camion et l'emplacement de la maison et calculer une "rubrique" du premier emplacement à la seconde, Une autre astuce / piège à l'aide de la vue sur la rue est que vous devez obtenir la vue de rue la plus proche de votre emplacement d'adresse en appelant à plusieurs reprises getpanoramabylocation code> avec un augmentation de la distance jusqu'à ce que vous soyez réussi ou atteignez une distance maximale. Je résous cela en utilisant ce code: p>
Exemple simple basé sur votre code:
Code de travail Snippet: P>
P>
<script src="http://maps.google.com/maps/api/js?libraries=geometry&key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script> <input id="address" type="text" value="344 Laguna Dr, Milpitas, CA 95035" /> <input id="geoBtn" type="button" value="Go" /> <div id="map_canvas"></div>
Merci, cela a principalement travaillé pour moi, sauf les deux arguments à géométry.sphérical.computeheading code> besoin d'être des instances de
letlng code>.
mystreetview.getlocation (). Latlng code> renvoie un
Latlng code> instance, mais vous devez également créer une nouvelle instance à partir de votre emplacement,
nouveau Google.maps.latlng (résultats [0] .geométrie.Location) code>.
résultats [0] .GEOMETRYR.LOCATION CODE> est déjà déjà un
Google.maps.Latlng code> objet
Oui, vous avez raison, si vous utilisez la bibliothèque de Geocoder pour obtenir l'emplacement, il renvoie un Letlng. Je frappais directement le point d'extrémité de l'API de géocode lorsque j'ai écrit ce commentaire, mais j'ai passé depuis l'utilisation du géocodeur.
La réponse utilise la bibliothèque Geocoder et non le service Web.