2012-05-23 4 views
2

Я пытаюсь интегрировать API карт V3 на наш веб-сайт. Мне нужно прочитать адрес и установить его в API MAP, чтобы на карте отобразилось уличное представление для этого адреса.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 и город и почтовый индекс и т. Д.). Как я могу присвоить адрес поля ввода карте, чтобы карта отображала непосредственно это конкретное местоположение?

Я использую пользовательский продукт. У меня есть еще один пример в том, что они используют:

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 для поиска адресов. Этот документ (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.место нахождения);

Помните, что точка зрения на улицу не всегда может указывать на нужное здание, я не думаю, что у Google есть способ точно сказать, на какой стороне улицы находится здание/повторный поиск будет.

Надеюсь, что это поможет.

1

Ответы на 2 вопросов:

  1. Как-то я не в состоянии смотреть Панорамный вид. Любая проблема с моим кодом?

Это происходит потому, что закрытие </div> на ваш map_canvas также охватывает панораму. Он должен прийти сразу после 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 в заголовке, где вы включаете в апи сценарий тег Google Maps.


Что касается второго вопроса, вы можете сделать это различными путями. Проще всего было бы использовать текстовые поля ввода и использовать функцию .val() jquery для получения значений в текстовых полях. Затем передайте значения геокодеру для выполнения ваших поисков.

Полезные ресурсы:

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

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

Смежные вопросы