- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我需要在我的网站上显示一个谷歌地图,其中包含我的家标记(我使用商店位置)并以用户位置为中心。我尝试:
<script>
var myCenter = new google.maps.LatLng('xxx');
var userCenter;
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
}
function showPosition(position) {
var latlon = position.coords.latitude + "," + position.coords.longitude;
userCenter=new google.maps.LatLng(latlon);
}
var marker;
function initialize()
{
var mapProp = {
center: userCenter,
zoom:15,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
marker=new google.maps.Marker({
position:myCenter,
});
marker.setMap(map);
var infowindow = new google.maps.InfoWindow({
content:"Casa"
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
如果我不使用 userCenter 并使用 MyCenter,则 map 将正常工作并以 MyCenter 为中心显示。
最佳答案
问题在于函数的执行顺序。您希望在 userCenter 可用之前使用 userCenter。这会产生一个错误(在 var mapProp = {center: userCenter, ...} 上),因此初始化停止工作。
顺便说一下,你永远不会调用 getLocation()。仅定义的函数不执行任何操作。仅当您在某处调用函数时,函数才会执行某些操作。
(顺便说一句2:navigator.geolocation不是Google服务。它是网络浏览器提供的服务)
我在代码中添加了额外的注释
<script src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>
<script>
var myCenter = new google.maps.LatLng(50.845463, 4.357112);
var userCenter;
var marker;
var map;
// sends a request to get the location of the user.
// Notice: you will have to wait for the callback (= showPosition) before you have the result of this request.
// So you cannot rely only on userCenter. You must use myCenter, until you are sure that showPosition receives the response
function getUserLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
}
// Response of getUserLocation(). The location of the client is known.
// Notice: by this time initialize() has been called. initialize() doesn't know anything about userCenter.
// userCenter will only get a value when this function is called.
function showPosition(position) {
userCenter = new google.maps.LatLng(
position.coords.latitude,
position.coords.longitude
);
// Now we know the position of the client. We can set the center of the map to this location
map.setCenter(userCenter);
}
// this function initializes Google maps. It is triggered the moment the DOM of the web page is loaded.
function initialize() {
// let's start the request to get the position of the user
getUserLocation();
var mapProp = {
center: myCenter, // notice: userCenter is still undefined, you cannot use it yet.
zoom:15,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
marker = new google.maps.Marker({
position: myCenter,
map: map // this replaces marker.setMap(map);
});
var infowindow = new google.maps.InfoWindow({
content: "Casa"
});
// a click on the marker opens the infoWindow
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, marker);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
关于javascript - google getLocation 函数在我的脚本中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26754939/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!