-1

Ich versuche, Markierungen auf Google Maps anzuzeigen, aber einige Markierungen werden angezeigt und andere nicht. Ich habe es mit verschiedenen Browsern wie Google Chrome und Firefox versucht, aber es hat nicht geholfen.Nicht alle Markierungen werden auf Google Maps angezeigt.

Hier ist mein JavaScript-Code.

<script type="text/javascript"> 
//<![CDATA[ 
var customIcons = { 
    icons: { 
    default:{ 
    normal: 'http://labs.google.com/ridefinder/images/mm_20_blue.png', 
    selected: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png' 
    } 
    } 
}; 

function load() { 
    var map = new google.maps.Map(document.getElementById("map"), { 
    center: new google.maps.LatLng(40.8833, 260.0167), 
    zoom: 5, 
    mapTypeId: 'roadmap' 
    }); 
var infoWindow = new google.maps.InfoWindow; 
    // Change this depending on the name of your PHP file 
    downloadUrl("ip_maps.php", function(data) { 
    var xml = data.responseXML; 
    var markers = xml.documentElement.getElementsByTagName("marker"); 
    for (var i = 0; i < markers.length; i++) { 
     var ip_address = markers[i].getAttribute("ip_address"); 
     var city_location = markers[i].getAttribute("city_location"); 
     var isp = markers[i].getAttribute("isp"); 
     var point = new google.maps.LatLng(
      parseFloat(markers[i].getAttribute("lat")), 
      parseFloat(markers[i].getAttribute("lng"))); 
     var html = "<b>" + ip_address + "</b>" +",\n" + city_location +",\n" + isp; 
     var icon = customIcons[isp] || {}; 
     var marker = new google.maps.Marker({ 
     map: map, 
     position: point, 
     icon: icon.icon, 
     shadow: icon.shadow 
     }); 
     bindInfoWindow(marker, map, infoWindow, html); 
    } 
    }); 
} 
function bindInfoWindow(marker, map, infoWindow, html) { 
    google.maps.event.addListener(marker, 'click', function() { 
    infoWindow.setContent(html); 
    infoWindow.open(map, marker); 
    }); 
} 
function downloadUrl(url, callback) { 
    var request = window.ActiveXObject ? 
new ActiveXObject('Microsoft.XMLHTTP') : 
     new XMLHttpRequest; 
    request.onreadystatechange = function() { 
    if (request.readyState == 4) { 
     request.onreadystatechange = doNothing; 
     callback(request,request.status); 
    } 
    }; 
    request.open('GET', url, true); 
    request.send(null); 
} 
function doNothing() {} 
//]]> 
</script> 

habe ich diesen Code von hier https://developers.google.com/maps/articles/phpsqlajax_v3. Nachdem ich verschiedene Threads durchlaufen hatte, erfuhr ich, dass dies wegen over_query_limit passieren konnte. Diese

ist, wie meine PostgreSQL-Datenbank sieht

id | ip_address | city_location  | lat | lng |       isp       
    1 | 74.125.0.0  | Mountain View  | 37.4192 | -122.0574 | Google 
    2 | 23.192.0.0  | Cambridge   | 42.3626 | -71.0843 | Akamai Technologies 
    3 | 128.206.0.0  | Columbia    | 38.9033 | -92.1022 | University of Missouri-Columbia 
    4 | 207.160.0.0  | Columbia    | 38.8817 | -92.402 | University of Missouri - dba the Missouri Research 
    5 | 96.6.0.0  | Amsterdam   | 52.35 | 4.9167 | Akamai Technologies 
    6 | 93.0.0.0  | Charleville-mézières | 49.7667 | 4.7167 | SFR 
    7 | 89.0.0.0  | Aachen    | 50.7884 | 6.1044 | NetCologne GmbH 
    8 | 72.246.0.0  | Boston    | 42.366 | -71.123 | Akamai Technologies 
    9 | 69.171.224.0 | Menlo Park   | 37.459 | -122.1781 | Facebook 
    10 | 68.80.0.0  | New Castle   | 39.6387 | -75.6195 | Comcast Cable 
    11 | 54.241.191.192 | San Jose    | 37.3394 | -121.895 | Amazon Technologies 
    12 | 54.208.0.0  | Ashburn    | 39.0335 | -77.4838 | Amazon Technologies 
    13 | 54.160.0.0  | Ashburn    | 39.0335 | -77.4838 | Amazon 
    14 | 50.16.0.0  | Ashburn    | 39.0335 | -77.4838 | Amazon.com 
    15 | 31.0.0.0  | Unknown    | 52.2333 | 21.0167 | Polkomtel Sp. z o.o. 
    16 | 23.234.16.0  | Rowland Heights  | 33.9782 | -117.904 | Defender cloud international llc 
    17 | 23.0.0.0  | Cambridge   | 42.3626 | -71.0843 | Akamai Technologies 
    18 | 216.115.96.0 | Sunnyvale   | 37.4249 | -122.0074 | Yahoo! 
    19 | 205.185.206.128 | Chicago    | 41.8471 | -87.6248 | Highwinds Network Group 
    20 | 198.71.44.0  | Ann Arbor   | 42.2734 | -83.7133 | Internet2 
    21 | 198.209.0.0  | Columbia    | 38.8817 | -92.402 | University of Missouri - dba the Missouri Research 
    22 | 187.0.0.0  | Nova Prata   | -28.7833 | -51.6  | Adylnet Acesso A internet Ltda 
    23 | 184.169.128.0 | San Jose    | 37.3394 | -121.895 | Amazon.com 
    24 | 173.192.0.0  | Dallas    | 32.7831 | -96.8067 | SoftLayer Technologies 
    25 | 157.60.0.0  | Redmond    | 47.6801 | -122.1206 | Microsoft Corporation 
    26 | 157.56.0.0  | Redmond    | 47.6801 | -122.1206 | Microsoft bingbot 
    27 | 157.54.0.0  | Redmond    | 47.6801 | -122.1206 | Microsoft Corporation 
    28 | 129.237.0.0  | Lawrence    | 38.9525 | -95.2756 | University of Kansas 

Die Markierungen, die angezeigt werden, sind id = 1,3,4,5,6,7,9,10,14,15,16,17, 18,, 19, 20, 22, 23, 24, 27, 28 und die Marker, die nicht angezeigt werden, sind id = 2,8,11,12,13,21,25,26. Hier

ist die .xml-Datei

<markers> 
<marker ip_address="74.125.0.0" city_location="Mountain View" lat="37.4192" lng="-122.0574" isp="Google"/> 
<marker ip_address="23.192.0.0" city_location="Cambridge" lat="42.3626" lng="-71.0843" isp="Akamai Technologies"/> 
<marker ip_address="128.206.0.0" city_location="Columbia" lat="38.9033" lng="-92.1022" isp="University of Missouri-Columbia"/> 
<marker ip_address="207.160.0.0" city_location="Columbia" lat="38.8817" lng="-92.402" isp="University of Missouri - dba the Missouri Research"/> 
<marker ip_address="96.6.0.0" city_location="Amsterdam" lat="52.35" lng="4.9167" isp="Akamai Technologies"/> 
<marker ip_address="93.0.0.0" city_location="Charleville-mézières" lat="49.7667" lng="4.7167" isp="SFR"/> 
<marker ip_address="89.0.0.0" city_location="Aachen" lat="50.7884" lng="6.1044" isp="NetCologne GmbH"/> 
<marker ip_address="72.246.0.0" city_location="Boston" lat="42.366" lng="-71.123" isp="Akamai Technologies"/> 
<marker ip_address="69.171.224.0" city_location="Menlo Park" lat="37.459" lng="-122.1781" isp="Facebook"/> 
<marker ip_address="68.80.0.0" city_location="New Castle" lat="39.6387" lng="-75.6195" isp="Comcast Cable"/> 
<marker ip_address="54.241.191.192" city_location="San Jose" lat="37.3394" lng="-121.895" isp="Amazon Technologies"/> 
<marker ip_address="54.208.0.0" city_location="Ashburn" lat="39.0335" lng="-77.4838" isp="Amazon Technologies"/> 
<marker ip_address="54.160.0.0" city_location="Ashburn" lat="39.0335" lng="-77.4838" isp="Amazon"/> 
<marker ip_address="50.16.0.0" city_location="Ashburn" lat="39.0335" lng="-77.4838" isp="Amazon.com"/> 
<marker ip_address="31.0.0.0" city_location=" Unknown" lat="52.2333" lng="21.0167" isp="Polkomtel Sp. z o.o."/> 
<marker ip_address="23.234.16.0" city_location="Rowland Heights" lat="33.9782" lng="-117.904" isp="Defender cloud international llc"/> 
<marker ip_address="23.0.0.0" city_location="Cambridge" lat="42.3626" lng="-71.0843" isp="Akamai Technologies"/> 
<marker ip_address="216.115.96.0" city_location="Sunnyvale" lat="37.4249" lng="-122.0074" isp="Yahoo!"/> 
<marker ip_address="205.185.206.128" city_location="Chicago" lat="41.8471" lng="-87.6248" isp="Highwinds Network Group"/> 
<marker ip_address="198.71.44.0" city_location="Ann Arbor" lat="42.2734" lng="-83.7133" isp="Internet2"/> 
<marker ip_address="198.209.0.0" city_location="Columbia" lat="38.8817" lng="-92.402" isp="University of Missouri - dba the Missouri Research"/> 
<marker ip_address="187.0.0.0" city_location="Nova Prata" lat="-28.7833" lng="-51.6" isp="Adylnet Acesso A internet Ltda"/> 
<marker ip_address="184.169.128.0" city_location="San Jose" lat="37.3394" lng="-121.895" isp="Amazon.com"/> 
<marker ip_address="173.192.0.0" city_location="Dallas" lat="32.7831" lng="-96.8067" isp="SoftLayer Technologies"/> 
<marker ip_address="157.60.0.0" city_location="Redmond" lat="47.6801" lng="-122.1206" isp="Microsoft Corporation"/> 
<marker ip_address="157.56.0.0" city_location="Redmond" lat="47.6801" lng="-122.1206" isp="Microsoft bingbot"/> 
<marker ip_address="157.54.0.0" city_location="Redmond" lat="47.6801" lng="-122.1206" isp="Microsoft Corporation"/> 
<marker ip_address="129.237.0.0" city_location="Lawrence" lat="38.9525" lng="-95.2756" isp="University of Kansas"/> 
</markers> 

Hier ist meine Php-Datei

<?php 
ini_set('display_errors', 1); 
//phppsql_genxml.php 

function parseToXML($htmlStr) 
{ 
$xmlStr=str_replace('<','&lt;',$htmlStr); 
$xmlStr=str_replace('>','&gt;',$xmlStr); 
$xmlStr=str_replace('"','&quot;',$xmlStr); 
$xmlStr=str_replace("'",'&#39;',$xmlStr); 
$xmlStr=str_replace("&",'&amp;',$xmlStr); 
return $xmlStr; 
} 

$dbh = pg_connect("host=localhost port=5432 dbname=ip_database user=postgres password=something"); 
if (!$dbh) { 
die("Error in connection: " . pg_last_error()); 
    } 

    // execute query 

$sql = "SELECT ip_address, city_location, lat, lng, isp FROM markers"; 
$result = pg_query($dbh, $sql); 
if (!$result) { 

die("Error in SQL query: " . pg_last_error()); 
    } 

header("Content-type: text/xml"); 

    // Start XML file, echo parent node 
    echo '<markers>'; 

    // Iterate through the rows, printing XML nodes for each 
     while ($row = pg_fetch_array($result)){ 
    // ADD TO XML DOCUMENT NODE 
    echo '<marker '; 
    echo 'ip_address="' . parseToXML($row['ip_address']) . '" ';        

    echo 'city_location="' . parseToXML($row['city_location']) . '" '; 
    echo 'lat="' . $row['lat'] . '" '; 
    echo 'lng="' . $row['lng'] . '" '; 
     echo 'isp="' . parseToXML($row['isp']) . '" '; 
    echo '/>'; 
    } 
    // End XML file 
    echo '</markers>'; 
     ?> 

Alles funktioniert gut, außer dass von 28 Markern nur 8 angezeigt werden, wie above.How erwähnt können Ich repariere das? Ich möchte eine große Anzahl von Markern anzeigen.

Jede Hilfe mit diesem würde geschätzt werden. Danke

+0

Welche Markierungen dargestellt werden? Welche sind nicht? Geben Sie ein Beispiel [Minimales, vollständiges, getestetes und lesbares Beispiel] (http://stackoverflow.com/help/mcve) an, das Ihr Problem zusammen mit einer Beschreibung der Replikation veranschaulicht. – geocodezip

+0

@geocodezip Entschuldigung dafür. Ich habe die notwendigen Änderungen am Post vorgenommen, indem ich '.php file',' .xml file' und 'my database information' hinzugefügt habe. Ich bin ein Anfänger mit Web-Entwicklung Sachen so wusste nicht, was alle Dinge hinzuzufügen. Alles funktioniert gut, außer 8 Marker von 28 werden nicht angezeigt. Ich habe erwähnt, welche nicht angezeigt werden. –

+0

@geocodezip wenn ich heranzoome, sollte ich in der Lage sein, die überlappenden Markierungen richtig zu sehen? Es muss eine Möglichkeit geben, die überlappenden Markierungen anzuzeigen. Hilfe –

Antwort

1

Ihre "fehlenden" Markierungen sind Duplikate (es gibt andere Markierungen auf ihnen).

Code-Schnipsel:

var customIcons = { 
 
    icons: { 
 
    default: { 
 
     normal: 'http://labs.google.com/ridefinder/images/mm_20_blue.png', 
 
     selected: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png' 
 
    } 
 
    } 
 
}; 
 
var gmarkers = []; 
 

 
function load() { 
 
    var map = new google.maps.Map(document.getElementById("map"), { 
 
    center: new google.maps.LatLng(40.8833, 260.0167), 
 
    zoom: 5, 
 
    mapTypeId: 'roadmap' 
 
    }); 
 
    var infoWindow = new google.maps.InfoWindow; 
 
    // Change this depending on the name of your PHP file 
 
    // downloadUrl("ip_maps.php", function(data) { 
 
    // var xml = data.responseXML; 
 
    var xml = xmlParse(xmlStr); 
 
    var markers = xml.documentElement.getElementsByTagName("marker"); 
 
    var bounds = new google.maps.LatLngBounds(); 
 
    document.getElementById('info').innerHTML = "markers.length=" + markers.length; 
 
    for (var i = 0; i < markers.length; i++) { 
 
    var ip_address = markers[i].getAttribute("ip_address"); 
 
    var city_location = markers[i].getAttribute("city_location"); 
 
    var isp = markers[i].getAttribute("isp"); 
 
    var point = new google.maps.LatLng(
 
     parseFloat(markers[i].getAttribute("lat")), 
 
     parseFloat(markers[i].getAttribute("lng"))); 
 
    bounds.extend(point); 
 
    var html = "<b>" + ip_address + "</b>" + ",\n" + city_location + ",\n" + isp; 
 
    var icon = customIcons[isp] || {}; 
 
    var marker = new google.maps.Marker({ 
 
     map: map, 
 
     position: point, 
 
     icon: icon.icon, 
 
     shadow: icon.shadow 
 
    }); 
 
    bindInfoWindow(marker, map, infoWindow, html); 
 
    document.getElementById('sidebar').innerHTML += "<a href='javascript:myclick(" + i + ");'>marker " + (i+1) + "</a><br>"; 
 
    for (var j = 0; j < gmarkers.length; j++) { 
 
     if (point.equals(gmarkers[j].getPosition())) { 
 
     document.getElementById('sidebar').innerHTML += "(duplicate of " + (j+1) + ")"; 
 
     break; 
 
     } 
 
    } 
 
    document.getElementById('sidebar').innerHTML += "<br>"; 
 
    gmarkers.push(marker); 
 
    } 
 
    map.fitBounds(bounds); 
 
    // }); 
 
} 
 

 
function myclick(i) { 
 
    google.maps.event.trigger(gmarkers[i], 'click'); 
 
} 
 

 
function bindInfoWindow(marker, map, infoWindow, html) { 
 
    google.maps.event.addListener(marker, 'click', function() { 
 
    infoWindow.setContent(html); 
 
    infoWindow.open(map, marker); 
 
    }); 
 
} 
 

 
function downloadUrl(url, callback) { 
 
    var request = window.ActiveXObject ? 
 
    new ActiveXObject('Microsoft.XMLHTTP') : 
 
    new XMLHttpRequest; 
 
    request.onreadystatechange = function() { 
 
    if (request.readyState == 4) { 
 
     request.onreadystatechange = doNothing; 
 
     callback(request, request.status); 
 
    } 
 
    }; 
 
    request.open('GET', url, true); 
 
    request.send(null); 
 
} 
 

 
function doNothing() {} 
 

 
var xmlStr = '<markers><marker ip_address="74.125.0.0" city_location="Mountain View" lat="37.4192" lng="-122.0574" isp="Google"/><marker ip_address="23.192.0.0" city_location="Cambridge" lat="42.3626" lng="-71.0843" isp="Akamai Technologies"/><marker ip_address="128.206.0.0" city_location="Columbia" lat="38.9033" lng="-92.1022" isp="University of Missouri-Columbia"/><marker ip_address="207.160.0.0" city_location="Columbia" lat="38.8817" lng="-92.402" isp="University of Missouri - dba the Missouri Research"/><marker ip_address="96.6.0.0" city_location="Amsterdam" lat="52.35" lng="4.9167" isp="Akamai Technologies"/><marker ip_address="93.0.0.0" city_location="Charleville-mézières" lat="49.7667" lng="4.7167" isp="SFR"/><marker ip_address="89.0.0.0" city_location="Aachen" lat="50.7884" lng="6.1044" isp="NetCologne GmbH"/><marker ip_address="72.246.0.0" city_location="Boston" lat="42.366" lng="-71.123" isp="Akamai Technologies"/><marker ip_address="69.171.224.0" city_location="Menlo Park" lat="37.459" lng="-122.1781" isp="Facebook"/><marker ip_address="68.80.0.0" city_location="New Castle" lat="39.6387" lng="-75.6195" isp="Comcast Cable"/><marker ip_address="54.241.191.192" city_location="San Jose" lat="37.3394" lng="-121.895" isp="Amazon Technologies"/><marker ip_address="54.208.0.0" city_location="Ashburn" lat="39.0335" lng="-77.4838" isp="Amazon Technologies"/><marker ip_address="54.160.0.0" city_location="Ashburn" lat="39.0335" lng="-77.4838" isp="Amazon"/><marker ip_address="50.16.0.0" city_location="Ashburn" lat="39.0335" lng="-77.4838" isp="Amazon.com"/><marker ip_address="31.0.0.0" city_location=" Unknown" lat="52.2333" lng="21.0167" isp="Polkomtel Sp. z o.o."/><marker ip_address="23.234.16.0" city_location="Rowland Heights" lat="33.9782" lng="-117.904" isp="Defender cloud international llc"/><marker ip_address="23.0.0.0" city_location="Cambridge" lat="42.3626" lng="-71.0843" isp="Akamai Technologies"/><marker ip_address="216.115.96.0" city_location="Sunnyvale" lat="37.4249" lng="-122.0074" isp="Yahoo!"/><marker ip_address="205.185.206.128" city_location="Chicago" lat="41.8471" lng="-87.6248" isp="Highwinds Network Group"/><marker ip_address="198.71.44.0" city_location="Ann Arbor" lat="42.2734" lng="-83.7133" isp="Internet2"/><marker ip_address="198.209.0.0" city_location="Columbia" lat="38.8817" lng="-92.402" isp="University of Missouri - dba the Missouri Research"/><marker ip_address="187.0.0.0" city_location="Nova Prata" lat="-28.7833" lng="-51.6" isp="Adylnet Acesso A internet Ltda"/> <marker ip_address="184.169.128.0" city_location="San Jose" lat="37.3394" lng="-121.895" isp="Amazon.com"/> <marker ip_address="173.192.0.0" city_location="Dallas" lat="32.7831" lng="-96.8067" isp="SoftLayer Technologies"/> <marker ip_address="157.60.0.0" city_location="Redmond" lat="47.6801" lng="-122.1206" isp="Microsoft Corporation"/> <marker ip_address="157.56.0.0" city_location="Redmond" lat="47.6801" lng="-122.1206" isp="Microsoft bingbot"/><marker ip_address="157.54.0.0" city_location="Redmond" lat="47.6801" lng="-122.1206" isp="Microsoft Corporation"/> <marker ip_address="129.237.0.0" city_location="Lawrence" lat="38.9525" lng="-95.2756" isp="University of Kansas"/> </markers>'; 
 

 
google.maps.event.addDomListener(window, "load", load); 
 

 
function xmlParse(str) { 
 
    if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') { 
 
    var doc = new ActiveXObject('Microsoft.XMLDOM'); 
 
    doc.loadXML(str); 
 
    return doc; 
 
    } 
 

 
    if (typeof DOMParser != 'undefined') { 
 
    return (new DOMParser()).parseFromString(str, 'text/xml'); 
 
    } 
 

 
    return createElement('div', null); 
 
}
html, 
 
body, 
 
#map { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
} 
 
#sidebar { 
 
    -webkit-columns: 150px 4; 
 
    -moz-columns: 150px 4; 
 
    columns: 150px 4; 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="info"></div> 
 
<div id="sidebar"></div> 
 
<div id="map"></div>