我创建了一个带有融合表的地图,并希望它只通过我的网站可见
我使用Oauth为web应用程序创建了一个客户机ID,并在地图上复制了该ID,但我无法使其工作
如果我试图从我的网站打开地图,它会打开一个没有标记的空白地图我做错了什么?
你能帮我找出错误吗?
谢谢
我为我的英语道歉
这是页面的代码
Google Maps JavaScript API v3 Example: Fusion Tables Layer function initialize() { geocoder = new google.maps.Geocoder(); var italia = new google.maps.LatLng(42.147114,13.25964); map = new google.maps.Map(document.getElementById('map-canvas'), { center: italia, zoom: 6, mapTypeId: google.maps.MapTypeId.ROADMAP }); var campminuscolo = idcamping.value var camp = "'" + campminuscolo + "'" var camp1 = "'Nome' contains ignoring case " + camp var layer = new google.maps.FusionTablesLayer({ query: { select: 'indirizzo', from: '1mMSBct8LQjKiZBj-BqLYhszMgjKXUJnHxlQQaSgS', where: camp1 }, options: { styleId: 2, templateId: 2 }, styles: [{ markerOptions: { iconName: "grn_circle" }, }] }); layer.setMap(map); } function testenter(e) { if (e.keyCode == 13) { // tasto enter initialize(); return false; } } var geocoder; var map; var markersArray = []; var marker; function codeAddress() { var address = document.getElementById("address").value; geocoder.geocode({ 'address': address }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { clearOverlays(); document.getElementById("address").value = results[0]['formatted_address']; map.setCenter(results[0].geometry.location); map.setZoom(8); marker = new google.maps.Marker({ map : map, title : results[0]['formatted_address'], position : results[0].geometry.location, icon : "arrow.png", animation : google.maps.Animation.DROP }); markersArray.push(marker); } else { alert("Geocode was not successful for the following reason: " + status); } }); } function clearOverlays() { if (markersArray) { for (i in markersArray) { markersArray[i].setMap(null); } } } function testenter1(e) { if (e.keyCode == 13) { codeAddress(); return false; } } #avatar-panel { position: absolute; bottom: 17px; right: 0px; margin-left: -180px; width: 144px; height: 53px; z-index: 1; background-color: trasparent; padding: 1px; border: 0px solid #999; } input { border: 2px solid gray; background: rgb(243, 243, 243); width: 150px; left: 100px; padding: 4px; position: absolute; z-index: 1; }
OAuth用于对应用程序数据进行用户级访问。如果您只希望您的网站具有访问权限,您可以使用API密钥,并将使用限制在API控制台中的网站域。您需要有一个项目,并将其设置为浏览器密钥。这篇bout.com的文章可以帮助你展示让一切井然有序的步骤。
使用OAuth的一个简单方法是使用Google的Javascript API。您可以通过使用
我有类似以下内容来加载Javascript API:
function init() {
gapi.client.load('fusiontables', 'v1', function() {
gapi.client.setApiKey( YOUR_API_KEY_AS_STRING );
//Stuff to do once Fusion Tables API is loaded
gapi.client.fusiontables.query.sql({
sql: "SELECT * FROM" + YOUR_TABLE_ID
}).execute( YOUR_FUNCTION_ON_SUCCESS ); //Example
});
//Load other APIs as needed.
}
auth
函数附加到按钮的单击事件处理程序,以授权OAuth请求。
function auth(e) {
e.preventDefault();
gapi.auth.authorize({
'client_id': YOUR_BROWSER_API_KEY,
'scope': 'https://www.googleapis.com/auth/fusiontables', //or other scope
'immediate': false
}, function() {
//Execute this on successful auth like create another UI
});
}
感谢您在另一条评论中澄清。
您可以使用添加一个FusionTablesLayer
到您的地图。大部分细节可以在他们的文档中找到。你需要事先设置一个地图环境,并确保你的融合表被列为公共的。
假设你有一个元素
var map;
function initialize() {
// Initialize the map
map = new google.maps.Map(document.getElementById('mapElement'), {
center: new google.maps.LatLng(0, 0), //Initial coordinates to center on
zoom: 10, //Initial Zoom level
});
var ft = new g.FusionTablesLayer({
query: {
select: 'LOCATION_COLUMN_NAME', //From the Fusion Table
from: 'TABLE_ID' //Fusion Table ID (long string in its URL)
},
map: map
});
}
google.maps.event.addDomListener(window, 'load', initialize);
这与他们的示例中反映的代码相同。