6
私はPerlとJavascriptを組み合わせて、Google Maps API v3を使用してIPアドレスの緯度/経度の場所をGoogleマップにマッピングしようとしています。私は戻ってきてると、私はエラーを取得しています、マーカーである:Uncaught Error: Invalid value for property <position>: 43.073052,-89.40123
プロパティの値が無効です<position>
私のコードです:
#!/usr/bin/perl -w
use CGI qw(:standard);
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
use CGI::Session ('-ip_match');
use SOAP::Lite;
use lib '/home/schreiber/perl5/lib/perl5';
use JSON qw(encode_json);
$session = CGI::Session->load();
$q = new CGI;
my $soap = SOAP::Lite
-> uri('http://v1.fraudlabs.com/')
-> proxy('http://v1.fraudlabs.com/ip2locationwebservice.asmx')
-> on_action(sub { join "/", "http://v1.fraudlabs.com", $_[1] });
$license = "<removed>";
#if($session->is_expired) {
# print $q->header(-cache_control=>"no-cache, no-store, must-revalidate");
# print "Your session has expired. Please login again.";
# print "<br/><a href=\"../login.html\">Login</a>";
#} elsif($session->is_empty) {
# print $q->header(-cache_control=>"no-cache, no-store, must-revalidate");
# print "You have not logged in";
#} else {
print $q->header(-cache_control=>"no-cache, no-store, must-revalidate");
open (IPF, "/home/access_log");
@incomingarray=<IPF>;
$i = 0;
foreach $pair(@incomingarray) {
($ip, $rest) = split(/ - - /, $pair);
$incomingarray[$i] = $ip;
chomp $ip;
$i++;
}
close (IPF);
my %hash = map { $_, 1 } @incomingarray;
my @distinctIP = keys %hash;
$j = 0;
my @iplocation;
foreach (@distinctIP) {
my $method = SOAP::Data->name('IP2Location')->attr({xmlns =>
'http://v1.fraudlabs.com/' });
my @params = SOAP::Data->name('inputdata' => \SOAP::Data->value(
SOAP::Data->name(IP=>$_),
SOAP::Data->name(LICENSE=>$license)
));
my $result = $soap->call($method => @params);
$lat = $result->valueof('//LATITUDE');
$long = $result->valueof('//LONGITUDE');
push(@iplocation, "$lat,$long");
}
my $json = encode_json(\@iplocation);
# print "Content-Type: text/html\n\n";
print '<html>
<head>
<script type="text/javascript">
function initialize() {
var myOptions = {
zoom: 8,
center: new google.maps.LatLng(44.49, -91.30),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById(\'map_canvas\'),
myOptions);
var coord_data = new Array();
coord_data = '.$json.';
var marker;
for (var i = 1; i < coord_data.length; i++) {
console.log(coord_data[i]);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(coord_data[i]),
map:map
});
marker.setMap(map);
}
}
function loadScript() {
var script = document.createElement(\'script\');
script.type = \'text/javascript\';
script.src = \'//maps.googleapis.com/maps/api/js?sensor=false&callback=initialize\';
document.body.appendChild(script);
}
window.onload = loadScript;
</script>
</head>
<body>
<div id="map_canvas" style="width: 100%; height: 100%"></div>
</body>
</html>
';
#}
どのような援助をいただければ幸いです。
ありがとうございました。それはもはや私にエラーを与えていませんが、マップにマーカーを追加していません。何か案は? – Kruug
私は今あなたの構文をチェックするだけの問題だと思う(私は問題がちょうどJavascriptの構文であると思う)。私はPerlに慣れていないので、何が起こっているのか正確に言うことはできません。テストとして、あなたのHTMLをテキストファイルにコピーし、FirebugでテストしてChromeにロードしました。これは2行のコードを変更した後、マーカーと一緒に働いた: coord_data = [{lat:44.49、lng:-91}]; 位置:新しいgoogle.maps.LatLng(coord_data [i] .lat、coord_data [i] .lng)、 – McGarnagle