2012-05-23 112 views
2

我正在尝试将Google地图V3 API整合到我们的网站中。我需要读取地址并将其设置为MAP API,以便地图将显示该地址的街景视图。Google MAP API V3 - 街景

所以我需要3分的帮助。

  1. 如何读取地址值。

    例子:var streetAddressArray = getElementsByAttribute(parent.document.forms[0], "*", "smokeid", "Address Line 1");(我不知道这是什么功能都行,只是贴给的正是我要寻找的想法)

  2. 阅读设置为API类/方法,以便值后该地图可以显示街景。

  3. 将其显示为街景。

这与我所期待的:


我对你的反应苏维非常感谢! 这是我的计划:

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<style type="text/css">  html { height: 100% }  body { height: 100%; margin: 0; padding: 0 }  #map_canvas { height: 100% } </style> 
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=KEY_VALUE &sensor=true"> 
</script>  
<script type="text/javascript">  
    function initialize() { 

    var fenway = new google.maps.LatLng(42.345573,-71.098326); 
    var mapOptions = { 
    center: fenway, 
    zoom: 14, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(
    document.getElementById("map_canvas"), mapOptions); 
    var panoramaOptions = { 
     position: fenway, 
     pov: { 
     heading: 34, 
     pitch: 10, 
     zoom: 1 
     } 
    }; 
    var panorama = new google.maps.StreetViewPanorama(document.getElementById("pano"),panoramaOptions); 
    map.setStreetView(panorama); 

    }  
</script> 
</head> 
<body onload="initialize()"> 
<div id="map_canvas" style="width:100%; height:100%"> 
<div id="pano" style="position:absolute; left:410px; top: 8px; width: 400px; height: 300px;"></div> 
</div> 
</body> 
</html> 

我现在面临这个两个问题,

  1. 不知怎的,我无法查看全景视图。我的代码有问题吗?
  2. 地图的地址应来自束输入字段(地址栏1和城市和Zip等)。如何将输入字段地址分配给地图,以便地图直接显示该特定位置?

我正在使用自定义产品。我还有一个例子,他们使用的:

var streetAddressArray = getElementsByAttribute(parent.document.forms[0], "*", "smokeid", "LossLocation_Address1"); 

我想我有点接近目标,但我的这个例子不工作,它没有任何渲染。

<!DOCTYPE html><html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type="text/css">  html { height: 100% }  body { height: 100%; margin: 0; padding: 0 }  #map_canvas { height: 100% } </style> <script type="text/javascript"  
    src="http://maps.googleapis.com/maps/api/js?key=AIzaSyBweQln0Jf5uBWvkTGSkv8AfkBdt-zZ3dE&sensor=true"> </script>  
<script type="text/javascript">  

    <!-- --> 

    var geocoder; 
    var map; 
    function initialize() { 
    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(-34.397, 150.644); 
    var myOptions = {  zoom: 8,  center: latlng,  mapTypeId: google.maps.MapTypeId.ROADMAP } 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    } 
    function codeAddress() { 
    var address = document.getElementById("address").value; 
    geocoder.geocode({ 'address': address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location}); 
     } 
     else 
     { 
     alert("Geocode was not successful for the following reason: " + status); 
     } 
     }); 
    } 
<body onload="initialize()"> 
<div id="map_canvas" style="width: 320px; height: 480px;"> 
</div> 
<div> 
    <input id="address" type="textbox" value="Sydney, NSW"> 
    <input type="button" value="Encode" onclick="codeAddress()"> 
</div> 
</body> 
    <!-- --> 
</html> 

你能帮我解决问题吗?

回答

1

您需要先初始化StreetView(代替或绑定到您的地图),请参阅StreetView文档以设置它(https://developers.google.com/maps/documentation/javascript/streetview )。您需要使用Google的Geocode服务来查找地址。本文档(https://developers.google.com/maps/documentation/javascript/geocoding)将帮助您设置一个简单的地址搜索,但您必须稍微调整一下,以便在搜索时显示街景地图。从本质上讲,你将不得不改变:

geocoder.geocode({ 'address': address}, function(results, status) { 
if (status == google.maps.GeocoderStatus.OK) { 
    map.setCenter(results[0].geometry.location); 
} 

相反map.setCenter的,你需要的位置设置为panorama.setPosition(结果[0] .geometry。位置);

请记住,街景的角度可能并不总是指向你想要的建筑,我不认为谷歌有办法准确地告诉你街道的哪一侧你的建筑物/重新搜索将是。

希望有所帮助。

1

回答您的2个问题:

  1. 不知怎的,我无法查看全景视图。我的代码有问题吗?

发生这种情况是因为您的map_canvas的关闭</div>也包含了pano。它应该在div为map_canvas提供后直接来了,就像这样:

<body onload="initialize()"> 
<div id="map_canvas" style="width:100%; height:100%"></div> 
<div id="pano" style="position:absolute; left:410px; top: 8px; width: 400px; height: 300px;"></div> 
</body> 

此外,请务必在那里你包括谷歌地图API的脚本标记头API密钥。


关于你的第二个问题,你可以用多种方法来做到这一点。最简单的方法是使用输入文本字段并使用jquery的.val()函数来获取文本字段中的值。然后将值传递给地理编码器以执行搜索。

有用的资源:

https://developers.google.com/maps/documentation/javascript/geocoding

http://api.jquery.com/val/