我正在尝试用javascript做一些非常简单的事情,但不能完全了解它。我不确定我应该将var地址传递给哪种格式。
$(function() {
$('.latlng').each(function(){
var address = $(this).html();
getMap(address);
});
});
function getMap(address) {
var map = new google.maps.Map(mapDiv, {
center: new google.maps.LatLng(address),
...
});
}
当我将JQuery ref传递给普通javascript时出现错误: TypeError:'undefined'不是对象(评估'a.position = b')。任何帮助表示赞赏。
答案 0 :(得分:1)
如果我正确阅读并且您正确发布了此代码,则会将不存在的对象传递给getMap()
,同时您希望传递地址对象。如果你纠正这个会怎么样?
jQuery实例就像所有其他实例一样只是普通的javascript对象,因此应该没有问题。
答案 1 :(得分:0)
您将变量latLng
传递给getMap
,但未设置其值。顶部的ready
功能应如下所示:
$(function() {
$('.latlng').each(function(){
var address = $(this).html();
getMap(this);
});
});
或者,如果您尝试传递您设置的address
变量,请将您的就绪函数看起来像这样:
$(function() {
$('.latlng').each(function(){
var address = $(this).html();
getMap(address);
});
});
答案 2 :(得分:0)
您的问题与jquery或javascript无关。 您将错误的数据传递到LatLng method。
您需要将两个参数传递给LatLng方法: ...
var mapDiv = $('#mapDiv')[0], // also make sure the div is a regular dom node
lat = 7.1011123,
lng = 4.6667566;
function getMap(address) {
var map = new google.maps.Map(mapDiv, {
center: new google.maps.LatLng( lat, lng ), // you must pass in two parameters
...
});
}
如果您尝试从文本div获取LatLng坐标,则需要将字符串转换为浮点数。
假设您使用以下html:
<ul>
<li class="latlng">7.4142335,3.1296874</li>
<li class="latlng">8.4135039,-5.1256828</li>
<li class="latlng">-14.4101158,-5.2810335</li>
</ul>
然后,这将是每个getMap()
列表项运行.latlng
的函数:
$('.latlng').each(function( i ){
var address = $(this).text();
address = address.split(','); // convert your text into an array
// send in your lat and lng strings parsed as floats
getMap(
parseFloat( address[0] ),
parseFloat( address[1] )
);
});