Googlemapの相互作用にgmap3.net jqueryプラグインを使用するポジショニングシステムを使用しています。
静的な場合は問題なくポインターを配置できますが、動的に配置するのが難しいため、エラーがあることはわかっていますが、それを見つけることができないようです。
かっこが欠けているだけでevalを機能させることができましたが、evalは1つのオブジェクトのみを検出し、コンマの後のすべてを無視するようです。
したがって、マップの変更を開始する Javascript は次のとおりです。
//Clear old map
$('#map').gmap3('destroy').html('');
var ajaxURL = BASE_URL + 'ajax/getPeopleNearMe/';
$.ajax({
type: 'POST',
url: ajaxURL,
data: {
filter: filter
},
success: function(data){
$('#map').gmap3({
getgeoloc:
{
callback:function(latLng)
{
if(latLng)
{
//Found
$(this).gmap3({
marker:
{
values:[eval("(" + data + ")"],
},
map:
{
options:
{
zoom:12,
mapTypeControl: false,
navigationControl: true,
streetViewControl: false
}
}
});
}
else
{
//Not found
}
}
}
});
}
});
次に、get people near me 関数で呼び出される PHP を次に示します。
function getPeopleNearMe()
{
$apiHandler = new APIHandler();
$result = $apiHandler->usersWithinRadius();
$json = json_decode($result);
$items = '';
if($json->value->results != null)
{
if($json->value->numberOfResults > 0)
{
$count = 0;
foreach($json->value->results as $result)
{
$items .= '
{
latLng:['.$result->lat.','.$result->lon.'],
options:
{
shadow:
{
url: "'.BASE_URL.'css/png/markerBg.png",
scaledSize:
{
width:40,
height:43.5
}
},
icon:
{
url: "'.$result->user->profileImage.'",
scaledSize:
{
width:32,
height:32
},
anchor:
{
x: 16,
y: 40
}
}
}
}';
if($count <= $json->value->numberOfResults){ $items .= ','; $count++;}
}
}
}
echo $items;
}
私が得ているエラーは型エラーです:
TypeError: '
{
latLng:[37.3323,-122.031],
options:
{
shadow:
{
url: "https://m.hollatme.com/css/png/markerBg.png",
scaledSize:
{
width:40,
height:43.5
}
},
icon:
{
url: "https://www.holla.com/img/resize/aHR0cHM6Ly9ob2xsYS1zdGF0aWMtaW1hZ2VzLnMzLmFtYXpvbmF3cy5jb20vcHJvZmlsZS84My8xMzYxODk2MDE2LmpwZw==/48/48/1",
scaledSize:
{
width:32,
height:32
},
anchor:
{
x: 16,
y: 40
}
}
}
},
{
latLng:[37.3343,-122.049],
options:
{
shadow:
{
url: "https://m.hollatme.com/css/png/markerBg.png",
scaledSize:
{
width:40,
height:43.5
}
},
icon:
{
url: "https://www.holla.com/img/resize/aHR0cHM6Ly9ob2xsYS1zdGF0aWMtaW1hZ2VzLnMzLmFtYXpvbmF3cy5jb20vcHJvZmlsZS8xNDEva2F5c2FtcGxlLmpwZw==/48/48/1",
scaledSize:
{
width:32,
height:32
},
anchor:
{
x: 16,
y: 40
}
}
}
},
{
latLng:[37.3323,-122.031],
options:
{
shadow:
{
url: "https://m.hollatme.com/css/png/markerBg.png",
scaledSize:
{
width:40,
height:43.5
}
},
icon:
{
url: "https://www.holla.com/img/resize/aHR0cHM6Ly9ob2xsYS1zdGF0aWMtaW1hZ2VzLnMzLmFtYXpvbmF3cy5jb20vcHJvZmlsZS8xNDIvMTM5Mzk0MF80NDcwMDYwOC5qcGc=/48/48/1",
scaledSize:
{
width:32,
height:32
},
anchor:
{
x: 16,
y: 40
}
}
}
},' is not a valid argument for 'in' (evaluating '"address" in O[L]')
問題は、データ var をオブジェクトではなく文字列として認識していることだと思います.... しかし、運が悪くて eval を試しましたが、他に何ができるかわかりません... よろしくお願いします!