未捕获的语法错误尝试执行反向地理编码
Uncaught SyntaxError trying to do reverse geocoding
我正在尝试进行一些反向地理编码,我制作了一个快速片段来测试我的代码以查看它是否有效。
这是以下代码:
<html>
<style>
/**
* Default attributes for gadget body.
*/
body {
font-family: Arial;
background: none transparent;
padding: 0px;
}
html, body, #map_canvas {
margin: 0;
padding: 0;
height: 100%;
}
</style>
<body>
<div id="map_canvas"></div>
<script>
var APIKey = "MyKeyValueIsInHere";
var geocoder;
var map;
var marker;
var locationTest = 'http://nominatim.openstreetmap.org/reverse?format=json&lat=55.653363&lon=12.547604&zoom=18&addressdetails=1';
var lat = 55.653363;
var lng = 12.547604;
function initialize() {
var latlng = new google.maps.LatLng(lat,lng);
// set the options for zoom level and map type
var myOptions = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
// create a map in the map_canvas div element
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
map.setCenter(latlng);
var marker = new google.maps.Marker({
map: map,
position: latlng
});
alert(locationTest);
var text = JSON.parse(locationTest);
var infoWindow = new google.maps.InfoWindow();
var houseNumber = text.address.house_number;
var road = text.address.road;
var suburb = text.address.suburb;
var zipCode = text.address.postcode;
var city = text.address.city;
var address = road + " " + houseNumber + ", " + zipCode + " " + suburb + " i " + city;
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(address);
infoWindow.open(map, this);
});
}
function loadScript() {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.googleapis.com/maps/api/js?key=" + APIKey + "&sensor=false&callback=initialize";
document.body.appendChild(script);
}
loadScript();
</script>
</body>
</html>
无论如何,当我运行它时,我会收到一个警报弹出说:http://nominatim.openstreetmap.org/reverse?format=json&lat=55.653363&lon=12.547604&zoom=18&addressdetails=1
基本上,我想做的是在我的谷歌地图上的标记顶部弹出一个信息窗口。信息窗口应该有作为变量地址的文本。
但是当我运行这段代码时,我得到一个
Uncaught SyntaxError: Unexpected token h
在第 45 行,即这一行:
var text = JSON.parse(locationTest);
那么有人知道我如何解决这个问题吗?
提前感谢!
你有
var locationTest = 'http://nominatim.openstreetmap.org/reverse?format=json&lat=55.653363&lon=12.547604&zoom=18&addressdetails=1';
然后
var text = JSON.parse(locationTest);
但是 JSON.parse 希望它的参数是 JSON 编码的字符串:文档。首先需要将网页的内容作为字符串获取,然后将其解析为 JSON。错误消息抱怨"http"前面的"h"。它期望第一个字符为"{"。
在alert
声明之后,您可以尝试:
var $e = $('<div></div>'); // a jQuery object that does not affect your displayed page
$e.load('http://nominatim.openstreetmap.org/reverse?format=json&lat=55.653363&lon=12.547604&zoom=18&addressdetails=1', function (response) {
// This code only runs once the response is available from openstreetmap.org
var text = JSON.parse(response);
var infoWindow = new google.maps.InfoWindow();
var houseNumber = text.address.house_number;
var road = text.address.road;
var suburb = text.address.suburb;
var zipCode = text.address.postcode;
var city = text.address.city;
var address = road + " " + houseNumber + ", " + zipCode + " " + suburb + " i " + city;
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(address);
infoWindow.open(map, this);
});
});
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 在 Java 脚本中使用追加时 HTML 标记不起作用,但在执行硬编码时 html 代码工作正常
- 未捕获的语法错误尝试执行反向地理编码
- Javascript代码不能用php编码器执行
- 执行编码的JavaScript代码
- 反向地理编码:将GPS坐标转换为位置名称的函数调用永远不会执行
- 如何使用UTF-8编码数据执行融合表请求
- 执行谷歌地图反向地理编码,并将结果作为HTML内容的一部分显示在信息窗口中
- 如何使用编码模式/框架在try-catch块中执行每个Javascript函数(或范围内的函数)