flex actionscript LatLngBounds kan het niet laten werken

Mijn vraag is helemaal aan het einde van de post.

Ik heb alles geprobeerd, van het instellen van een timer voor alle markeringen die moeten worden ingesteld voor allerlei berekeningen van de vier hoeken, maar niets lijkt te werken.

Telkens wanneer ik een markering aan de markermanager toevoeg, roep ik deze functie hieronder

public function markerSetBounds(someLat , someLng):void{
    var bounds:LatLngBounds = new LatLngBounds();

    for(var i:int = 0; i < myMarkers.length; i++)
{
    var currentLatLon:LatLng = new LatLng(someLat , someLng);
        bounds.extend(currentLatLon);
}

googleMap.setZoom(googleMap.getBoundsZoomLevel(bounds));
googleMap.setCenter(bounds.getCenter());
}

Ik geloof dat ik weet waarom dit niet werkt. Ik verstuur slechts één reeks lat, lng tegelijkertijd.

Toen ik echter het volgende probeerde, vertelde flex me dat het niet wist wat myMarkers [i] .lat betekende.

Het volgende is hoe ik myMarkers-array vul

var someMarker:Marker = new Marker(new LatLng(someLat , someLng), new MarkerOptions({tooltip:someAddress, hasShadow: true}));
myMarkers.push(someMarker);

Dit is hoe ik door de array wil gaan, maar flex begrijpt niet wat .lat betekent.

for(var i:int = 0; i < myMarkers.length; i++)
{
    var currentLatLon:LatLng = new LatLng(myMarkers[i].lat , myMarkers[i].lng);
    bounds.extend(currentLatLon);
}

Mijn vraag is hoe ik door de array myMarkers loop om currentLatLon in te stellen. Ik heb ook een geprobeerd voor elke (var someObj: Marker in myMarkers) maar hij vindt niets. De markeringen worden weergegeven op de kaart, maar de grenzen werken niet.

0
Dit is perfect geldige code. De standaarditems in een array zijn van het type Object , dus myMarkers [i] .lat moet compileren. Als dit u tijdens het uitvoeren een foutmelding geeft, betekent dit dat u myMarkers [i] .lat niet hebt ingesteld. Debug door uw code en kijk of dat echt is waar u naar moet verwijzen
toegevoegd de auteur Pranav Hosangadi, de bron
Bedankt Pranav. Ik was in staat om het volgende te doen - voor elke (someMarker in myMarkers) {var newLatLng: LatLng = someMarker.getLatLng (); Alert.show (newLatLng.toString ()); bounds.extend (newLatLng);} Het breidt echter nog steeds de grenzen uit om de nieuwe markeringen te tonen die zijn toegevoegd
toegevoegd de auteur kronus, de bron

2 antwoord

Heb je geprobeerd iets te doen zoals:

(myMarkers[i] as Marker).lat

Is dit een probleem tijdens runtime of compileertijd?

0
toegevoegd
Gordon, welkom bij stackOverflow. Ik stel voor dat je de faq leest. Je zult zien dat als je wilt vragen of ze iets hebben geprobeerd, of als je meer details wilt, dergelijke berichten in het gedeelte "Opmerkingen" gaan en je ze niet als een antwoord plaatst. Proost !!
toegevoegd de auteur Pranav Hosangadi, de bron
Bedankt Pranav, ik zal dat doen!
toegevoegd de auteur Gordon Bailey, de bron
Heb je een gewone lus geprobeerd? bijv. voor (var i: int = 0; i ik heb in het verleden problemen gehad met for-each-in-lussen die niet zijn ingevoerd (alsof er geen objecten in een array als ik weet dat die er zijn).
toegevoegd de auteur Gordon Bailey, de bron
Bedankt voor het vragen aan Gordon. Toen ik probeerde voor elk (var someObj: Marker in myMarkers) tijdens het debuggen, komen er geen fouten naar boven, maar tegelijkertijd worden er geen grenzen gesteld. Alsof er geen someObj gevonden is.
toegevoegd de auteur kronus, de bron
Ik was in staat om te verifiëren dat de juiste lat en lng worden gebruikt door dit te doen - voor elke (someMarker in myMarkers) {var newLatLng: LatLng = someMarker.getLatLng (); Alert.show (newLatLng.toString ()); bounds.extend (newLatLng);} Ik heb echter nog steeds de LatLngBounds-markeringen niet goed geplaatst. In mijn init (), geocoder.geocode (textInput.text); waarbij textInput de waarde heeft van Los Angeles, CA en dat is waar het map.center aanblijft, ongeacht hoeveel markeringen er worden toegevoegd. De gebruiker moet handmatig uitzoomen om de markeringen te bekijken.
toegevoegd de auteur kronus, de bron

OK, ik kwam erachter wat het probleem was en het was dat ik de dingen in de juiste volgorde moest plaatsen.

Verklaar eerst de LatLngBounds.

Ten tweede, maak de markeringen.

Ten derde, stel de zoomlens in

Forth, breidt de grenzen uit.

                bounds = new LatLngBounds();

            covToXML = new XML(event.result);
            xmlToList = new XMLList(covToXML);
            listToCol = new XMLListCollection(xmlToList);
            someLat = Number(listToCol.children().child("geometry").child("location").child("lat").text());
            someLng = Number(listToCol.children().child("geometry").child("location").child("lng").text());
            someAddress = String(listToCol.children().child("formatted_address").text());

            var markerOptions:MarkerOptions = new MarkerOptions();

            markerOptions.icon = new (whichIcon(GlobalVars.randomIcon));
            markerOptions.tooltip = someAddress;
            markerOptions.hasShadow = true;

            someMarker = new Marker(new LatLng(someLat , someLng), markerOptions);
            someMarker.addEventListener(MapMouseEvent.CLICK,markerClicked);

            myMarkers.push(someMarker);
            googleMap.addOverlay(someMarker);

            for each(someMarker in myMarkers)
            {
                var newLatLng:LatLng = someMarker.getLatLng();
               //Alert.show(newLatLng.toString());
                bounds.extend(newLatLng);
            }

            googleMap.setCenter(bounds.getCenter());
            googleMap.setZoom(googleMap.getBoundsZoomLevel(bounds));

Bedankt voor alle suggesties en vragen die me hebben geholpen bij het oplossen van de oplossing.

0
toegevoegd