1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | function createMarker(latlng, name, address, id) { // var html = '<div style="width:275px;"><b>' + name + '</b> <br/>' + address + '</div>'; var marker = new google.maps.Marker ({ map: map, position: latlng }); google.maps.event.addListener(marker, 'click', function() { $.ajax({ url: '/test/ajax?name=' + name + '&id=' + id, success: function(data) { var str = '<div class="infobox-wrapper"><div id="infobox">' + data + '</div></div>'; // alert(str); infoWindow.setContent(str); // verwijderd styling, laat NIETS zien. infoWindow.setContent(data); // verwijderd content laat styling zien. //$('#infobox-content').text(data); // doet zelfde als bovenstaand //$('#infobox-content').innerHTML = data; // same o same. infoWindow.open(map, marker); } }); }); markers.push(marker); } |
is alleen een beetje lastig met fluid design > procentenquote:Op zondag 24 maart 2013 00:04 schreef boem-dikkie het volgende:
[..]
Sowieso nooit meer dan 64, daar kun je natuurlijk op letten.
Nee at is het probleem niet, zal eens proberen om ook de opmaak via ajax te versturen en kijken of ik dan de stijl kan behouden maar lijkt me sterkquote:Op zondag 24 maart 2013 11:24 schreef Devv het volgende:
Wat krijg je terug in data? Misschien zitten daar karakters in die de opmaak kapot maken.
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.-edit 3-
En een ander, want nu wordt deze functie automatisch getriggerd als ik map.fitBounds doehoe zorg ik er voor dat wanneer ik map.fitBounds aanroep de zoom functie niet alsnog getriggerd wordt?
1
2
3
4google.maps.event.addListener(map, 'zoom_changed', function()
{
BoundBasedMarkers(map)
});
Als ik nu een adres laad via een zoek functie, wordt map.fitBounds gebruikt om de map goed te positioneren, echter wordt direct daarna binnen de bounds nog een oproep gedaan om de markers te in te lezen, dus dubbel....
opgelost:SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Ik leer het allemaal nog wel en nu kijken hoe ik die OMS er dynamisch in kan zetten
[ Bericht 26% gewijzigd door Chandler op 25-03-2013 14:19:00 ]Just say hi!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | var map, json; // markers = []; var infoWindow; var zoomIgnore = false; function load() { map = new google.maps.Map(document.getElementById("map"), { center: new google.maps.LatLng(40, -100), zoom: 4, maxZoom: 11, mapTypeId: 'roadmap', mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, scrollwheel: false }); // infoWindow = new google.maps.InfoWindow(); infoWindow = new InfoBox({ content: $("#infobox"), disableAutoPan: false, pixelOffset: new google.maps.Size(-140, 0), zIndex: null, boxStyle: { background: "url('http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/examples/tipbox.gif') no-repeat", opacity: 0.75 }, closeBoxMargin: "12px 4px 2px 2px", closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif", infoBoxClearance: new google.maps.Size(1, 1) }); /* functions to enable reload after zooman drag */ google.maps.event.addListener(map, 'dragend', function() { BoundBasedMarkers(map); }); google.maps.event.addListener(map, 'zoom_changed', function() { if (zoomIgnore) { return false; } BoundBasedMarkers(map); }); } function BoundBasedMarkers(map) { var searchUrl = '/test/script?' + 'SW_LAT=' + map.getBounds().getSouthWest().lat() + '&SW_LNG=' + map.getBounds().getSouthWest().lng() + '&NE_LAT=' + map.getBounds().getNorthEast().lat() + '&NE_LNG=' + map.getBounds().getNorthEast().lng(); $.ajax({ url: searchUrl, error: function() { alert('Er is geen data gevonden worden binnen gegeven coordinaten'); }, dataType: "json", success: function (json) { var bounds = new google.maps.LatLngBounds(); for (var i = 0, length = json.length; i < length; i++) { var data = json[i]; var latLng = new google.maps.LatLng(data.lat, data.lng); createMarker(latLng, data.id, data.name); bounds.extend(latLng); } createList(); } }); } function searchLocations() { var address = $("#addressInput").val(); var geocoder = new google.maps.Geocoder(); geocoder.geocode({address: address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { var center = results[0].geometry.location; var radius = $('#radiusSelect').val(); var searchUrl = '/test/script?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius; $.ajax({ url: searchUrl, dataType: "json", error: function() { alert('Er is geen data gevonden worden met opgegeven lokatie'); }, success: function (json) { zoomIgnore = true; var bounds = new google.maps.LatLngBounds(); for (var i = 0, length = json.length; i < length; i++) { var data = json[i]; var latLng = new google.maps.LatLng(data.lat, data.lng); createMarker(latLng, data.id, data.name); bounds.extend(latLng); } map.fitBounds(bounds); zoomIgnore = false; createList(); } }); } else { alert(address + ' not found'); } }); } function createMarker(latlng, id, name) { var marker = new google.maps.Marker({ map: map, position: latlng }); google.maps.event.addListener(marker, 'click', function() { $.ajax({ url: '/test/ajax?name=' + name + '&id=' + id, success: function(data) { infoWindow.setContent('<div class="infobox-wrapper"><div id="infobox" style="display: block;">' + data + '</div></div>'); infoWindow.open(map, marker); map.setCenter(marker.getPosition()); } }); }); // markers.push(marker); } function createList() { console.log('createlist'); if (typeof json !== 'undefined') { for (var i = 0, length = json.length; i < length; i++) { var data = json[i]; $('#list').append('<div id="addresslist"><h2>' + data.name + '</h2><p>' + data.address + '</p></div>'); } } } //]]> |
Ik dacht dat doordat ik var json; in het begin van het script heb gezet, deze array overal te benaderen was... maar daar zit ik dus fout mee? hoe kan ik wel zorgen dat deze data overal beschikbaar is?quote:Op donderdag 28 maart 2013 08:18 schreef Catch22- het volgende:
Je moet de jsondata wel meegeven natuurlijk
Je definieert hem als lege variabel, waar stop je er data in?quote:Op donderdag 28 maart 2013 08:59 schreef Chandler het volgende:
[..]
Ik dacht dat doordat ik var json; in het begin van het script heb gezet, deze array overal te benaderen was... maar daar zit ik dus fout mee? hoe kan ik wel zorgen dat deze data overal beschikbaar is?
Nooit zulke globale variabelen op deze manier gebruiken! Altijd gewoon meegeven aan de methode die er wat mee doet. Anders krijg je gedonderquote:Op donderdag 28 maart 2013 08:59 schreef Chandler het volgende:
[..]
Ik dacht dat doordat ik var json; in het begin van het script heb gezet, deze array overal te benaderen was... maar daar zit ik dus fout mee? hoe kan ik wel zorgen dat deze data overal beschikbaar is?
Dat is omdat er 1 maar 1 map object is, die 1x wordt geset. Die JSon wordt met elke call mogelijk aangepast en dan ga je rare dingen krijgen. Ik gebruik zelf eigenlijk nooit globale (window) variabelen in mijn javascript.quote:Op donderdag 28 maart 2013 11:21 schreef Chandler het volgende:
@KomtTijd; in de functies searchLocations() en BoundBasedMarkers(map) kijk maar eens goed, daar wordt deze functie ook aangeroepen!
@Catch22; je zult ongetwijfeld gelijk hebben hoor, maar map wordt ook op zo'n manier gebruikt en dat werkt wel dus vraag mij af waarom dit dan niet werkt... (wil het fijne er eigenlijk van weten..)
In Javascript kunnen globale en lokale variabelen dezelfde naam hebben. Het is niet zo dat je de globale variabele "json" bijwerkt op het moment dat je een lokale variabele vult met dezelfde naam.quote:Op donderdag 28 maart 2013 11:21 schreef Chandler het volgende:
@KomtTijd; in de functies searchLocations() en BoundBasedMarkers(map) kijk maar eens goed, daar wordt deze functie ook aangeroepen!
1 | function (json) |
Nee, de ajax-functie geeft de data die terugkomt van de server mee in een variabele die json heet. Dit heeft niets te maken met de globale variabele in jouw code die ook json heet.quote:Op donderdag 28 maart 2013 11:46 schreef Chandler het volgende:
dus ook in de $.ajax functie niet? daar geef ik toch de parameter json mee?
[ code verwijderd ]
Nee.quote:Op donderdag 28 maart 2013 11:46 schreef Chandler het volgende:
dus ook in de $.ajax functie niet? daar geef ik toch de parameter json mee?
[ code verwijderd ]
Dan zal ik mij daar ook maar aan houden, wil eigenlijk bovenstaande functies zo gaan maken dat ze op welke map dan maar ook te gebruiken zijn... heb nog een hoop te doen!quote:Op donderdag 28 maart 2013 11:44 schreef Catch22- het volgende:
Dat is omdat er 1 maar 1 map object is, die 1x wordt geset. Die JSon wordt met elke call mogelijk aangepast en dan ga je rare dingen krijgen. Ik gebruik zelf eigenlijk nooit globale (window) variabelen in mijn javascript.
En waarom niet? please tell mequote:
Duidelijk!quote:Op donderdag 28 maart 2013 11:47 schreef Tijn het volgende:
Nee, de ajax-functie geeft de data die terugkomt van de server mee in een variabele die json heet. Dit heeft niets te maken met de globale variabele in jouw code die ook json heet.
http://yuiblog.com/crockford/quote:Op donderdag 28 maart 2013 11:21 schreef Chandler het volgende:
(wil het fijne er eigenlijk van weten..)
Staat al in de success functionquote:Op donderdag 28 maart 2013 11:51 schreef KomtTijd... het volgende:
Wat Tijn zegt. En dan nog zou het niet werken omdat de functie aanroep niet wacht op de json response. Die moet je op zijn minst verplaatsen naar de success function.
Haha... mobiele fok is een stuk minder snel (met typen..)quote:Op donderdag 28 maart 2013 11:54 schreef KomtTijd... het volgende:
oh jullie waren al wat verder. zit op mobiel
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |