Javascript 未捕获的语法错误正在尝试进行反向地理编码
我正在尝试做一些反向地理编码,我制作了一个快速片段来测试我的代码,看看它是否有效 这是以下代码:Javascript 未捕获的语法错误正在尝试进行反向地理编码,javascript,google-maps,geocoding,reverse-geocoding,nominatim,Javascript,Google Maps,Geocoding,Reverse Geocoding,Nominatim,我正在尝试做一些反向地理编码,我制作了一个快速片段来测试我的代码,看看它是否有效 这是以下代码: <html> <style> /** * Default attributes for gadget body. */ body { font-family: Arial; background: none transparent; padding: 0px; } html, body, #map_canvas { margin: 0; padding: 0
<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>
在第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”。它希望第一个字符是“{”
在发出警报后,您可以尝试:
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);
});
});
var$e=$(“”);//不影响显示页面的jQuery对象
$e.load('http://nominatim.openstreetmap.org/reverse?format=json&lat=55.653363&lon=12.547604&zoom=18&addressdetails=1,函数(响应){
//此代码仅在openstreetmap.org提供响应后运行
var text=JSON.parse(响应);
var infoWindow=new google.maps.infoWindow();
var houseNumber=text.address.house\u编号;
var road=text.address.road;
var郊区=text.address.郊区;
var zipCode=text.address.postcode;
var city=text.address.city;
var地址=道路+“”+门牌号+”,“+zipCode+“”+郊区+“i”+城市;
google.maps.event.addListener(标记'click',函数(){
infoWindow.setContent(地址);
打开(地图,这个);
});
});
作为一名程序员,我有点经验不足,所以不确定该从何处着手。你的意思是说我需要将{}放在locationTest中,或者确切地说是什么?(为这个愚蠢的问题感到抱歉)。以http://开头的URl是网页的地址。您需要通过网络获取该网页的内容,然后解析内容。这是使用jQuery最简单的方法。此处:获取页面内容需要时间。jQuery load(a,b)函数执行b(r)当页面a加载到变量r中时。如果您查看JSFIDLE页面并打开浏览器控制台chrome-view-developer-javascript控制台,您将看到3条控制台调试消息。感谢您的勾选!祝您好运!
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);
});
});