Javascript 在回调函数中设置标记,其中用户';s位置在创建地图后可用

Javascript 在回调函数中设置标记,其中用户';s位置在创建地图后可用,javascript,google-maps,google-maps-api-3,google-maps-markers,Javascript,Google Maps,Google Maps Api 3,Google Maps Markers,我做了一个功能,在谷歌地图上显示最近的酒店 var映射; 函数initMap(){ var latlng=新的google.maps.latlng(28.535516,77.391026); if(导航器.地理位置){ 试一试{ navigator.geolocation.getCurrentPosition(函数(位置){ 变量位置={ 纬度:位置坐标纬度, lng:position.coords.longitude }; setPos(myLocation); }); }捕捉(错误){ 变

我做了一个功能,在谷歌地图上显示最近的酒店

var映射;
函数initMap(){
var latlng=新的google.maps.latlng(28.535516,77.391026);
if(导航器.地理位置){
试一试{
navigator.geolocation.getCurrentPosition(函数(位置){
变量位置={
纬度:位置坐标纬度,
lng:position.coords.longitude
};
setPos(myLocation);
});
}捕捉(错误){
变量位置={
纬度:25.2048,
液化天然气:55.2708
};
setPos(myLocation);
}
}否则{
变量位置={
纬度:25.2048,
液化天然气:55.2708
};
setPos(myLocation);
}
}
功能设置位置(myLocation){
map=new google.maps.map(document.getElementById('map'){
中心:myLocation,
缩放:10
});
var service=newgoogle.maps.places.PlacesService(地图);
服务,近距离搜索({
地点:myLocation,
半径:4000,
类型:[“酒店”]
},处理结果);
}
函数processResults(结果、状态、分页){
if(status!==google.maps.places.PlacesServiceStatus.OK){
返回;
}否则{
创建标记(结果);
}
}
函数createMarkers(位置){
var bounds=new google.maps.LatLngBounds();
var placesList=document.getElementById('places');
for(var i=0,place;place=places[i];i++)
{
变量图像={
url:place.icon,
大小:新谷歌地图大小(71,71),
来源:新google.maps.Point(0,0),
主播:新google.maps.Point(17,34),
scaledSize:new google.maps.Size(25,25)
};
var marker=new google.maps.marker({
地图:地图,
图标:图像,
标题:place.name,
动画:google.maps.animation.DROP,
位置:place.geometry.location
});
扩展(place.geometry.location);
}
映射边界(bounds);
}
html,正文{
保证金:0;
填充:0;
}
#地图{
高度:500px;
利润率:10px自动;
宽度:800px;
}

将标记的创建添加到
setPos
功能中(在该功能中,地理定位结果可用且地图已创建)

当地理定位失败时:

当地理定位工作时,它会显示我的当前位置

代码片段:

var映射;
函数错误(){
log(“错误!”)
变量位置={
纬度:25.2048,
液化天然气:55.2708
};
setPos(myLocation);
}
函数initMap(){
var latlng=新的google.maps.latlng(28.535516,77.391026);
if(导航器.地理位置){
试一试{
navigator.geolocation.getCurrentPosition(函数(位置){
变量位置={
纬度:位置坐标纬度,
lng:position.coords.longitude
};
setPos(myLocation);
},错误);
}捕捉(错误){
变量位置={
纬度:25.2048,
液化天然气:55.2708
};
setPos(myLocation);
}
}否则{
变量位置={
纬度:25.2048,
液化天然气:55.2708
};
setPos(myLocation);
}
}
功能设置位置(myLocation){
map=new google.maps.map(document.getElementById('map'){
中心:myLocation,
缩放:10
});
var marker=new google.maps.marker({
位置:myLocation,
地图:地图,
标题:“我的立场”
})
var service=newgoogle.maps.places.PlacesService(地图);
服务,近距离搜索({
地点:myLocation,
半径:4000,
类型:[“酒店”]
},处理结果);
}
函数processResults(结果、状态、分页){
if(status!==google.maps.places.PlacesServiceStatus.OK){
返回;
}否则{
创建标记(结果);
}
}
函数createMarkers(位置){
var bounds=new google.maps.LatLngBounds();
var placesList=document.getElementById('places');
for(var i=0,place;place=places[i];i++){
变量图像={
url:place.icon,
大小:新谷歌地图大小(71,71),
来源:新google.maps.Point(0,0),
主播:新google.maps.Point(17,34),
scaledSize:new google.maps.Size(25,25)
};
var marker=new google.maps.marker({
地图:地图,
图标:图像,
标题:place.name,
动画:google.maps.animation.DROP,
位置:place.geometry.location
});
扩展(place.geometry.location);
}
映射边界(bounds);
}
html,
身体{
保证金:0;
填充:0;
身高:100%;
宽度:100%;
}
#地图{
身高:100%;
利润率:10px自动;
宽度:100%;
}


您是如何尝试显示用户的位置的?请提供一个显示您的问题的示例。我将代码放在函数的开头。首先,我获取用户的lat长度,然后在
initMap()的开头将标记放在那里
函数。请编辑您的问题以显示您的意思。地理定位功能是异步的,您需要在回调函数中设置该标记,用户位置可用的位置/时间(以及创建地图后…)谢谢你,兄弟。它对我有用。但问题是它在我的div中显示了两个标记,而且它的位置不准确。你能帮忙吗>