【发布时间】:2019-08-05 09:42:23
【问题描述】:
我有一个谷歌地图,我有一个半径为 5 公里的位置标记,我想把这个标记放在地图上,用户从哪里访问页面,它与静态经纬度很好,但给出动态值错误
var Circle = null;
var Radius = $("#radius").val();
var infoWindow = '';
$prevlatitude = $("#latitude").val();
$prevlongitude = $("#longitude").val();
var StartPosition = new google.maps.LatLng(28.62694276371995, 100.201416015625);
function DrawCircle(Map, Center, Radius) {
if (Circle != null) {
Circle.setMap(null);
}
if (Radius > 0) {
Radius *= 5;
Circle = new google.maps.Circle({
center: Center,
radius: Radius,
strokeColor: "#0000FF",
strokeOpacity: 0.35,
strokeWeight: 2,
fillColor: "#0000FF",
fillOpacity: 0.20,
map: Map
});
}
}
function SetPosition(Location, Viewport) {
Marker.setPosition(Location);
if (Viewport) {
Map.fitBounds(Viewport);
Map.setZoom(map.getZoom() + 1);
} else {
Map.panTo(Location);
}
Radius = $("#radius").val();
DrawCircle(Map, Location, Radius);
$("#latitude").val(Location.lat());
$("#longitude").val(Location.lng());
$("input[name=gtag],input[name=space_location],input[name=tag_location],input[name=location],input[name=locations]").val($("#latitude").val() + ";" + $("#longitude").val());
}
var MapOptions = {
zoom: 14,
center: StartPosition,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
disableDoubleClickZoom: true,
streetViewControl: false
};
var MapView = $("#map");
var Map = new google.maps.Map(MapView.get(0), MapOptions);
// Create the search box and link it to the UI element.
var input = document.getElementById('pac-input');
var searchBox = new google.maps.places.SearchBox(input);
Map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
Map.addListener('bounds_changed', function() {
searchBox.setBounds(Map.getBounds());
});
var markers = [];
// Listen for the event fired when the user selects a prediction and retrieve
// more details for that place.
searchBox.addListener('places_changed', function() {
var places = searchBox.getPlaces();
if (places.length == 0) {
return;
}
// For each place, get the icon, name and location.
var bounds = new google.maps.LatLngBounds();
places.forEach(function(place) {
if (!place.geometry) {
console.log("Returned place contains no geometry");
return;
}
var NewPosition = new google.maps.LatLng(place.geometry.location.lat(), place.geometry.location.lng());
//get_lat=place.geometry.location.lat();
//get_long=place.geometry.location.lng();
markers.forEach(function(marker) {
marker.setMap(null);
});
var Marker = new google.maps.Marker({
position: NewPosition,
map: Map,
title: "Drag Me",
draggable: true
});
markers.push(Marker);
google.maps.event.addListener(Marker, "dragend", function(event) {
SetPosition(Marker.position);
});
$("#radius").keyup(function() {
google.maps.event.trigger(Marker, "dragend");
});
DrawCircle(Map, NewPosition, Radius);
SetPosition(Marker.position);
if (place.geometry.viewport) {
bounds.union(place.geometry.viewport);
} else {
bounds.extend(place.geometry.location);
}
});
Map.fitBounds(bounds);
});
var Marker = new google.maps.Marker({
position: StartPosition,
map: Map,
title: "Drag Me",
draggable: true
});
markers.push(Marker);
google.maps.event.addListener(Marker, "dragend", function(event) {
SetPosition(Marker.position);
});
$("#radius").keyup(function() {
google.maps.event.trigger(Marker, "dragend");
});
DrawCircle(Map, StartPosition, Radius);
SetPosition(Marker.position);
});
if (navigator.geolocation) {
var StartPosition = '';
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
StartPosition = new google.maps.LatLng(parseFloat(position.coords.latitude), parseFloat(position.coords.longitude5));
});
}
第二个是我改变动态纬度,然后它说
"Uncaught TypeError: Cannot read property 'lat' of undefined"
【问题讨论】:
-
我无法重现发布代码所报告的错误。请在问题本身(最好是 StackOverflow 代码 sn-p)中提供一个 minimal reproducible example 来证明您的问题,包括任何必需的 HTML/CSS。
-
感谢您的评论@geocodezip,我只想要一个谷歌地图,用户的当前位置将被标记,但用户也可以将标记拖放到地图上的任何地方,但是当我试图给用户的纬度时var StartPosition = new google.maps.LatLng(lat,long);它正在抛出上述错误消息
-
随着您实现 StartPosition 的方式(在地图初始化和地理定位中),您遇到了范围问题。请注意,您有两个 StartPosition 变量,并且必须首先实例化您的 Google 地图。
position.coords.longitude5也应该是position.coords.longitude。请使用this example 获得正确实施 HTML5Geolocation 的指导。 -
另外请查看这个jsbin:output.jsbin.com/mavotuzidu
-
请提供一个minimal reproducible example 来证明您的问题。
标签: jquery google-maps geolocation location