谷歌地图&地理代码
Google Maps & Geocode
我昨天开始玩谷歌地图API,非常有趣。。
不过有点小问题。。我正在尝试制作一个使用地理编码的搜索功能。由于某些原因,它不会将地图移动到检索到的搜索结果区域。我知道它检索坐标很好,我添加了一个alert();
,它显示得很好。。
现场演示:http://teknologix.net/test.html
我怀疑这与initialize()
函数中定义的映射变量有关。但我不能100%确定:
<!DOCTYPE html>
<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?key=AIzaSyB4iGeXYKfqv65-8c9UbR1qPavZb6VFXCU&sensor=false"></script>
<script type="text/javascript">
var geocoder = new google.maps.Geocoder();
var map;
function geocodePosition(pos) {
geocoder.geocode({
latLng: pos
}, function(responses) {
if (responses && responses.length > 0) {
updateMarkerAddress(responses[0].formatted_address);
} else {
updateMarkerAddress('Cannot determine address at this location.');
}
});
}
function updateMarkerStatus(str) {
document.getElementById('markerStatus').innerHTML = str;
}
function updateMarkerPosition(latLng) {
document.getElementById('info').innerHTML = [
latLng.lat(),
latLng.lng()
].join(', ');
}
function updateMarkerAddress(str) {
document.getElementById('address').innerHTML = str;
}
function initialize() {
var latLng = new google.maps.LatLng(-33.90616588876475, 151.15102333450318);
var map = new google.maps.Map(document.getElementById('mapCanvas'), {
zoom: 15,
center: latLng,
disableDefaultUI: true,
zoomControl: true,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
position: latLng,
title: 'Point A',
map: map,
draggable: true
});
// Update current position info.
updateMarkerPosition(latLng);
geocodePosition(latLng);
// Add dragging event listeners.
google.maps.event.addListener(marker, 'dragstart', function() {
updateMarkerAddress('Dragging...');
});
google.maps.event.addListener(marker, 'drag', function() {
updateMarkerStatus('Dragging...');
updateMarkerPosition(marker.getPosition());
});
google.maps.event.addListener(marker, 'dragend', function() {
updateMarkerStatus('Drag ended');
geocodePosition(marker.getPosition());
map.panTo(marker.getPosition());
});
google.maps.event.addListener(map, 'bounds_changed', function() {
marker.setPosition(map.getCenter());
updateMarkerPosition(marker.getPosition());
});
}
function codeAddress() {
var address2 = document.getElementById('target').value;
geocoder.geocode( { 'address': address2}, function(results) {
alert(results[0].geometry.location);
map.setCenter(results[0].geometry.location);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<style>
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#mapCanvas {
height: 85%;
width: 100%;
position: relative;
}
#infoPanel div {
background: white;
top: 0px;
position: relative;
height: 20px;
width: 500px;
}
</style>
<div id="mapCanvas"></div>
<div id="infoPanel">
<b>Marker status:</b>
<div id="markerStatus"><i>Click and drag the marker.</i></div>
<b>Current position:</b>
<div id="info"></div>
<b>Closest matching address:</b>
<div id="address"></div>
</div>
<div>
<input id="target" type="textbox" value="Sydney, NSW">
<input type="button" value="Geocode" onclick="codeAddress();">
<input type="button" value="Test" onclick="test();">
</div>
</body>
</html>
任何帮助都将不胜感激!感谢您的阅读!
首先要尝试的是更改initialize()
函数,这样就不会在该函数的作用域内重新声明map
变量。换句话说,将var map = ...
更改为map = ...
,这将设置全局map
变量的值。
相关文章:
- 谷歌地图&地理代码
- 什么正在取代我的'以及“;javascript代码中使用&#39;和&”;
- 模块化&重用使用ExtJS编写的代码
- Node.js&两个请求之间的Express/Can上下文切换可以是同步代码
- 具有通用代码和唯一数据的HighGlobal配置&标题
- 设置Javascript时间&来自SQL数据库和asp.net代码隐藏页的时区
- KarmaJS中具有因果报应覆盖率的代码覆盖率过高&茉莉
- 使代码变短&表单验证
- 对于循环&if.else语句..我的代码看起来怎么样
- 我可以混合&将javascript与javascript中的服务器端代码进行匹配
- 使用Backbone JS样板&代码导航
- 自定义js/jQuery代码仅在IE7&IE8:对象不支持此属性或方法
- Selenium StaleElementReferenceException错误&页面加载完整代码不是常量.点
- 代码镜像&html2canvas:将iFrame另存为图像
- 获取访问者语言&带有javascript的国家/地区代码(客户端)
- 重复JS&文件夹中每个文件的JQuery代码
- 代码点火器&AJAX-Div重新加载不起作用
- 如何&为什么在代码中使用SUPER
- jQuery:What'在下面的代码块中比较的含义是callback&&function(){ca
- 插入更新的简单代码&删除操作