2013-03-03 93 views
0

我的脚本有问题。 我有一切正确设置,但地理编码不起作用,当我在我创建的形式输入一个城市的名称,然后我点击“geocoder”它没有任何反应。 这是我的代码:地理编码谷歌地图不起作用

变量:

var geocoder; 
var map; 
var markers = new Array(); 
var i = 0; 

天气预报脚本:

<!-- GEOCODER --> 
    function codeAddress() { 
var address = document.getElementById("address").value; 
geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
      document.getElementById('lat').value = results[0].geometry.location.lat(); 
      document.getElementById('lng').value = results[0].geometry.location.lng(); 
    map.setCenter(results[0].geometry.location); 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: results[0].geometry.location 
    }); 
      markers.push(marker); 
      if(markers.length > 1) 
       markers[(i-1)].setMap(null); 
      i++; 
    } else { 
    alert("Le geocodage n\'a pu etre effectue pour la raison suivante: " + status); 
    } 
    <!-- GEOCODER --> 

表:

<div> 
Adresse : <input id="address" type="text" value="paris"> 
&nbsp; <input type="button" value="Geocoder" onsubmit="codeAddress()"> 
</div> 

的完整代码(仅HTML):http://jsfiddle.net/hCmQb/

+0

你拨弄不起作用。在网页加载时,超过10个位置的地理编码会遇到配额和速率限制,需要非常长的时间并且不鼓励,将位置进行离线编码,并使用生成的坐标来显示标记。 – geocodezip 2013-03-03 16:32:45

回答

2

地理编码器不运行的原因是这样的:

<input type="button" value="Geocoder" onsubmit="codeAddress()"> 

你不想要 “的onsubmit” 你想 “onclick” 事件:

<input type="button" value="Geocoder" onclick="codeAddress()"> 

你的另一个问题是你的“map”变量对你的初始化函数是本地的。更改:

var map = new google.maps.Map(document.getElementById('map_canvas'), 
            mapOptions); 

到:

map = new google.maps.Map(document.getElementById('map_canvas'), 
           mapOptions); 

working example

+0

它的工作原理!但是,您知道是否可以删除地理编码器标记?当我删除var marker = new google.maps.Marker({地图崩溃 – 2013-03-03 17:09:16

+1

当然,不要创建它或将它添加到地图中(删除在codeAddress函数中创建标记的代码) – geocodezip 2013-03-03 17:10:16

+0

我已删除位置:results [0] .geometry.location,它的工作原理感谢您的帮助geocodezip – 2013-03-03 17:28:43