谷歌地图javascript api V3不显示地图
google maps javascript api V3 not showing map
我正在将地图的Version2 api转换为Version3。转换后,我没有得到语法或javascript错误,但我的映射没有显示出来。在Delphi Xe2中,映射被动态地生成为字符串并加载到TWebBrowser组件中。
为了调试,我在html生成后设置了一个断点,以便我可以将其复制到html文件中并使用chrome或IE浏览。
任何帮助都非常感谢!
下面是生成文件的链接:TestLatestHtml下面是Delphi .pas文件的链接:在这里输入链接描述
下面是生成的代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<title>Google Maps</title>
<meta name="viewport" content="initial-scale=1.0"/>
<meta charset=utf-8"/>
<style type="text/css">
html, body {width: 100%; height: 100px;}
body {margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 0px;}
#map {height: 400px; margin: 0; padding: 0;}
</Style>
<script type="text/javascript">
function GetMarker(csid, myLat, MyLong, premise) {
if (premise) {
var marker = new google.maps.Marker({position: {lat:28.3280638, lng:-81.4025985}, label: csid, map: map, icon: icon1});
}
else {
var marker = new google.maps.Marker({position: {lat: 28.3280638, lng: -81.4025985}, label: csid, map: map, icon: icon2});
}
}
function NewMarker(Info, MyLat,MyLong, premise) {
var mk2 = GetMarker(Info, MyLat, MyLong, premise);
};
</script>
</head>
<body>
<div id="map" style="width: 600px; height: 400px"></div>
<script>
function initialize() {
var map; var icon1,icon2;
map = new google.maps.Map(document.getElementById("map"), {center: {lat:28.3280638, lng:-81.4025985}, zoom: 15});
icon1 = new GIcon(G_DEFAULT_ICON, "http://www.unisdr.org/campaign/resilientcities/assets/images/template/google-maps-blue-pin.png");
icon2 = new GIcon(G_DEFAULT_ICON, "http://www.unisdr.org/campaign/resilientcities/assets/images/template/google-maps-red-pin.png");
var mk = NewMarker("<b>Charles~Cassandra</b><br/>Testor<br/> (407)870-0040",28.3280638 ,-81.4025985, true);
};
</script>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC39BI6ULNfGzXW_ABqLwuvPx-Sm9mYGcY"&callback=initialize>
</script>
</body>
</html>
下面是生成代码的dephi函数:
function TGoogleMap.GetMapHTML(MarketHeader:String; MyLat, MyLong : String): String;
function GetSubAddress:String;
var
loop : Integer;
begin
Result := '';
for loop := low(FMarkers) to High(Fmarkers) do begin
if (Fmarkers[loop].Lat <> '' ) then
Result := Result + ' AddMarker("'+ Fmarkers[loop].Info + '",' + Fmarkers[loop].Lat + ' ,' + Fmarkers[loop].Lon +',false); ' + #13#10 ;
// Result := Result + ' map.addOverlay(GetMarker("'+ Fmarkers[loop].Info + '",' + Fmarkers[loop].Lat + ' ,' + Fmarkers[loop].Lon +',false)); ' + #13#10 ;
end;
end;
begin
Result :=
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ' +
' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> ' +
'<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> ' +
' <head> ' +
' <title>Google Maps</title> ' +
' <meta name="viewport" content="initial-scale=1.0"/> ' +
' <meta charset=utf-8"/> ' +
' <style type="text/css">' +
// ' v':* {behavior:url(#default#VML);}' +
' html, body {width: 100%; height: 100%;}' +
' body {margin-top: 0px; margin-right: 0px; margin-left: 0px; margin-bottom: 0px;}' +
' </Style>' +
' <script type="text/javascript"> ' +
' function GetMarker(csid, myLat, MyLong, premise) { ' +
// ' var point = new GLatLng(MyLat,MyLong); ' +
' if (premise) {' +
' var marker = new google.maps.Marker({' +
' position: {lat:' +myLat+ ', lng:' +MyLong+ '},' +
' label: csid,' +
' map: map,' +
' icon: icon1' +
' });' +
' }' +
' else {' +
' var marker = new google.maps.Marker({' +
' position: {lat: ' +myLat+', lng: ' +MyLong+ '},' +
' label: csid,' +
' map: map,' +
' icon: icon2' +
' });' +
' }' +
// ' google.maps.event.addListener(map, "click", function(event) { ' +
// ' marker.openInfoWindowHtml(csid); ' +
// '
// ' }); ' +
// ' return marker; ' +
' } ' +
' function NewMarker(Info, MyLat,MyLong, premise) {' +
' var mk2 = GetMarker(Info, MyLat, MyLong, premise); ' +
// ' map.addOverlay(mk2);'+
' };' +
' </script> ' +
' </head> ' +
// ' <body onload="initialize()" onunload="GUnload()"> ' +
' <body> ' +
' <div id="map" style="width: 600px; height: 300px"></div> ' +
' <script>' +
' function initialize() { ' +
' var map;' +
' var icon1,icon2; ' +
' map = new google.maps.Map(document.getElementById("map"), {center: {lat:' + MyLat +', lng:' + MyLong + '}, zoom: 15}); ' +
' icon1 = new GIcon(G_DEFAULT_ICON, "http://www.unisdr.org/campaign/resilientcities/assets/images/template/google-maps-blue-pin.png");' +
' icon2 = new GIcon(G_DEFAULT_ICON, "http://www.unisdr.org/campaign/resilientcities/assets/images/template/google-maps-red-pin.png");' ;
Result := Result + GetSubAddress; // retrieve the additional markers to display.
Result := Result +
' var mk = NewMarker("' + MarketHeader + '",' + MyLat + ' ,' +MyLong +', true);' +
// ' map.addOverlay(mk); ' +
// ' map.setCenter(new GLatLng(' + Lat + ' ,' +Long +'), ' + IntToStr(FZoomLevel) + '); ' +
// ' map.addControl(new GScaleControl()); ' +
// ' map.addControl(new GOverviewMapControl()); ' +
' }; ' +
' </script>' +
' <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC39BI6ULNfGzXW_ABqLwuvPx-Sm9mYGcY" &callback=initialize></script>' +
' </body> ' +
'</html> ';
mmWeb.Lines.Add('************************');
mmWeb.Lines.Add(Result);
end;
Google Maps Javascript API v3不支持GIcon
(这是Google Maps Javascript API v2的东西,所有的Gxxxx类都被Google . Maps .xxxx类所取代)
使用google.maps.Icon匿名对象代替:
icon1 = {
url: "http://www.unisdr.org/campaign/resilientcities/assets/images/template/google-maps-blue-pin.png"
};
icon2 = {
url: "http://www.unisdr.org/campaign/resilientcities/assets/images/template/google-maps-red-pin.png"
};
一些小的作用域问题(map, icon1, icon2是局部的初始化函数),它为我工作:
工作小提琴代码片段:
var map;
var icon1, icon2;
function GetMarker(csid, myLat, MyLong, premise) {
if (premise) {
var marker = new google.maps.Marker({
position: {
lat: 28.3280638,
lng: -81.4025985
},
label: csid,
map: map,
icon: icon1
});
} else {
var marker = new google.maps.Marker({
position: {
lat: 28.3280638,
lng: -81.4025985
},
label: csid,
map: map,
icon: icon2
});
}
}
function NewMarker(Info, MyLat, MyLong, premise) {
var mk2 = GetMarker(Info, MyLat, MyLong, premise);
};
function initialize() {
map = new google.maps.Map(document.getElementById("map"), {
center: {
lat: 28.3280638,
lng: -81.4025985
},
zoom: 15
});
icon1 = {
url: "http://www.unisdr.org/campaign/resilientcities/assets/images/template/google-maps-blue-pin.png"
};
icon2 = {
url: "http://www.unisdr.org/campaign/resilientcities/assets/images/template/google-maps-red-pin.png"
};
var mk = NewMarker("<b>Charles~Cassandra</b><br/>Testor<br/> (407)870-0040", 28.3280638, -81.4025985, true);
};
html,
body {
width: 100%;
height: 100px;
}
body {
margin-top: 0px;
margin-right: 0px;
margin-left: 0px;
margin-bottom: 0px;
}
#map {
height: 400px;
margin: 0;
padding: 0;
}
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?callback=initialize">
</script>
<title>Google Maps</title>
<div id="map" style="width: 600px; height: 400px"></div>
效果很好!谢谢geocodezip !也跟着链接到你的回答"无法读取属性'offsetWidth'的null。我得到一个未捕获的引用错误:当我添加addDOMListener时,谷歌没有定义…我把它放在你在你的例子中关于offsetWidth为null的相同的地方。
<script type="text/javascript">
var map;
var icon1,icon2;
function GetMarker(csid, myLat, MyLong, premise) {
if (premise) {
var marker = new google.maps.Marker({position: {lat: 28.3280638, lng: -81.4025985}, label: csid, map: map, icon: icon1});
}
else {
var marker = new google.maps.Marker({position: {lat: 28.3280638, lng: -81.4025985}, label: csid, map: map, icon: icon2});
}
}
function NewMarker(Info, MyLat,MyLong, premise) {
var mk2 = GetMarker(Info, MyLat, MyLong, premise);
};
function initialize() {
map = new google.maps.Map(document.getElementById("map"), {center: {lat:28.3280638, lng:-81.4025985}, zoom: 15});
icon1 = {url:"http://www.unisdr.org/campaign/resilientcities/assets/images/template/google-maps-blue-pin.png"};
icon2 = {url:"http://www.unisdr.org/campaign/resilientcities/assets/images/template/google-maps-red-pin.png"};
var mk = NewMarker("<b>Charles~Cassandra</b><br/>Testor<br/> (407)870-0040",28.3280638 ,-81.4025985, true);
};
google.maps.event.addDomListener(window, "load", initialize);
</script>
</head>
<body>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?callback=initialize">
</script>
<title>Google Maps</title>
<div id="map" style="width: 100%; height: 100%"></div>
</body>
</html>
相关文章:
- 地图API没有't显示地图
- 单击按钮以突出显示地图标记 (Gmaps) - 如何
- 谷歌地图API没有;t显示地图,如果中心由javascript函数填充
- 将PHP集成到Javascript中,使用Google API显示地图标记
- IE中的谷歌地图API v3不显示地图或标记
- 数据映射不是't显示地图
- 谷歌地图隐藏并显示地图
- 在谷歌地图中显示地图标记内容的事件
- 映射:单击标记,显示地图旁边的内容
- 谷歌地图没有显示地图上的所有目的地标记,只有第一个和最后一个
- 如何在另一页上显示地图并全屏查看
- 谷歌地图 - 通过使用php检索纬度和纵向来显示地图和标记
- 单击时显示地图,然后滚动到地图
- 在 JavaScript 循环中显示地图标记的 JSON 解析数据
- 如何更新和显示地图对象
- 必应地图显示地图的左上角的北美
- 谷歌地图功能,但不显示地图
- 如何在选择html元素时高亮显示地图标记
- 获取用户's附近没有显示地图与谷歌地图api v3
- 显示地图的“切换街景地图的问题”