You know what.. you both were correct..

You were right about missing images...   I had the path correct but...
I did a dumb thing.. I introduced a new item in the database that
weren't of the type "restuarant" or "bar" so I think it threw the
error trying because I didn't have an icon for the new entry... so it
considered it blank (I think... ).  When i removed the entry from the
database, I no longer had the error and the customIcons loaded up just
fine.    "Woo Hoo"!!

Now with the code you just sent, i think it will handle blanks and
continue to process.

I can't thank you guys enough for all of the support that you have
provided.  Now i  can move forward with my development..

You guys are great!!

David G.





On Jan 12, 10:36 am, Jonathan Wagner <[email protected]> wrote:
> Pamela is right, you can declare objects that way (learned something
> new).
>
> I loaded up the project with the images and I am pretty sure I
> actually found the problem. The problem is that blank strings were
> getting passed to the type parameter of createMarker, this was causing
> the icon to be null, what I did was just made it skip any marker that
> did not have a type declared.
>
> public function readXml(event:Event):void{
>                 var markersXML:XML = new XML(event.target.data);
>
>                 var markers:XMLList = markersXML..marker;
>                 var markersCount:int = markers.length();
>                 var i:Number;
>                 for (i=0; i < markersCount; i++) {
>                         var markerXml:XML = markers[i];
>                         var name:String = markerx...@name;
>                         var address:String = markerx...@address;
>                         var type:String = markerx...@type;
>                         var latlng:LatLng = new LatLng(markerx...@lat, 
> markerx...@lng);
>
>                         if(type == "") { continue };
>                         var marker:Marker = createMarker(latlng, name, 
> address, type);
>                         map.addOverlay(marker);
>                 }
>         }
>
> Hopefully this finally fixes your problem.
>
> Jonathan
> Scribblemaps.com
>
> On Jan 12, 7:43 am, "pamela (Google Employee)" <[email protected]>
> wrote:
>
> > Hmm. I'm testing this demo in my Flex now, and it is working with the
> > properties in quotes. (I do see the AS3 object reference shows without
> > quotes). Is there a reason it would work for me?
>
> > That code looks like it should work with the customIcon property
> > commented back in, if the images are actually there.
>
> > You might find it easier to use something like pastebin.com to paste
> > code, if you can't put it with view-source enabled on a public server,
> > by the way.
>
> > - pamela
>
> > On Tue, Jan 12, 2010 at 8:51 PM, Jonathan Wagner <[email protected]> 
> > wrote:
> > > wow, I just figured out the problem, it's the way they are declaring
> > > the object
>
> > > private var customIcons:Object = { "restaurant": blueIcon,  "bar":
> > > greenIcon}
>
> > > it SHOULD be
> > > private var customIcons:Object = { restaurant: blueIcon,  bar:
> > > greenIcon}
>
> > > When declaring properties of an object you don't use quotes, sorry I
> > > wish I would of caught that earlier.
>
> > > Jonathan
>
> > > On Jan 11, 10:19 pm, David Green <[email protected]> wrote:
> > >> Jonathan,
>
> > >> That's exactly what I did.  I have the references correct in embed
> > >> statement because in Flex it throws an error when the path is
> > >> incorrect.  Now the only thing that I see that is different in the
> > >> code you sent me is that the customIcon was removed from the new
> > >> MarkerOptions.
>
> > >> Perhaps you will be able to see something in my code, which I'll paste
> > >> below.   I've combined the Store Finder demo and thexmlparsing
> > >> demo.. works perfectly except for the customIcons.   I'm pulling the
> > >> data from a mysql database I have set up locally.
>
> > >> Here is my code:
>
> > >> <?xmlversion="1.0" encoding="utf-8"?>
> > >> <!--
> > >>  Copyright 2008 Google Inc.
> > >>  Licensed under the Apache License, Version 2.0:
> > >>    http://www.apache.org/licenses/LICENSE-2.0
> > >> -->
> > >> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> > >> xmlns:maps="com.google.maps.*" layout="absolute" width="100%"
> > >> height="100%" viewSourceURL="srcview/index.html"
> > >> xmlns:comp="components.*">
> > >>   <mx:Panel title="Google Maps API for Flash Demo" width="100%"
> > >> height="100%">
> > >>   <mx:HDividedBox width="100%" height="100%">
> > >>  <mx:VBox width="100%" height="100%">
> > >>   <mx:HBox>
> > >>       <mx:Label
> > >>      text="Address: " width="70"/>
> > >>      <mx:TextInput id="address" text="Seattle WA" width="100%" />
> > >>   </mx:HBox>
> > >>   <mx:HBox>
> > >>       <mx:Label
> > >>      text="Radius: "
> > >>      width="70"/>
> > >>    <mx:ComboBox
> > >>        id="radius">
> > >>      <mx:dataProvider>
> > >>       <mx:Array>
> > >>        <mx:String>25</mx:String>
> > >>        <mx:String>100</mx:String>
> > >>        <mx:String>200</mx:String>
> > >>       </mx:Array>
> > >>      </mx:dataProvider>
> > >>    </mx:ComboBox>
> > >>   </mx:HBox>
> > >>   <mx:Button
> > >>      id="submitButton" label="Search Locations"
> > >>      click="searchLocations(event);"
> > >>   />
> > >>   <mx:HRule
> > >>       width="100%"
> > >>     strokeColor="0xC4CCCC"
> > >>     shadowColor="0xEEEEEE"
> > >>     strokeWidth="2"
> > >>   />
> > >>   <mx:DataGrid id="storeLocationsGrid" dataProvider="{storeLocations}"
> > >> width="100%" height="100%" sortableColumns="true" itemClick="showStore
> > >> (event)">
> > >>      <mx:columns>
> > >>             <mx:Array>
> > >>                 <mx:DataGridColumn dataField="StoreInfo">
> > >>                   <mx:itemRenderer>
> > >>                     <mx:Component>
> > >>                     <mx:Text width="100%" selectable="false"
> > >> htmlText="{data.StoreInfo}"/>
> > >>                     </mx:Component>
> > >>                   </mx:itemRenderer>
> > >>                </mx:DataGridColumn>
> > >>                 <mx:DataGridColumn dataField="Distance" width="70"/>
> > >>             </mx:Array>
> > >>         </mx:columns>
> > >>   </mx:DataGrid>
> > >>   </mx:VBox>
> > >>    <maps:Map
> > >>     id="map"
> > >>     key="ABQIAAAA7QUChpcnvnmXxsjC7s1fCxQGj0PqsCtxKvarsoS-
> > >> iqLdqZSKfxTd7Xf-2rEc_PC9o8IsJde80Wnj4g"
> > >>     mapevent_mapready="onMapReady(event)"
> > >>     width="100%" height="100%"/>
> > >>   </mx:HDividedBox>
> > >>  </mx:Panel>
> > >>  <mx:Script>
> > >>     <![CDATA[
> > >>       import com.google.maps.LatLng;
> > >>       import com.google.maps.LatLngBounds;
> > >>       import com.google.maps.Map;
> > >>       import com.google.maps.MapEvent;
> > >>       import com.google.maps.MapMouseEvent;
> > >>       import com.google.maps.MapType;
> > >>       import com.google.maps.overlays.Marker;
> > >>       import com.google.maps.overlays.MarkerOptions;
> > >>       import com.google.maps.InfoWindowOptions;
> > >>       import com.google.maps.services.ClientGeocoder;
> > >>       import com.google.maps.services.GeocodingEvent;
> > >>       import mx.controls.Alert;
> > >>       import mx.collections.ArrayCollection;
> > >>       import com.google.maps.controls.ZoomControl;
>
> > >>       [Bindable] private var storeLocations:ArrayCollection = new
> > >> ArrayCollection();
>
> > >>       private function onMapReady(event:Event):void {
> > >>         map.enableScrollWheelZoom();
> > >>         map.enableContinuousZoom();
> > >>         map.setCenter(new LatLng(40, -100), 4);
> > >>         map.addControl(new ZoomControl());
> > >>       }
>
> > >>       [Embed(source="../assets/images/blue-dot.png")] private var
> > >> blueIcon:Class;
>
> > >>       [Embed(source="../assets/images/green-dot.png")] private var
> > >> greenIcon:Class;
>
> > >>       [Bindable]
> > >>       private var customIcons:Object =
> > >>         {"restaurant": blueIcon, "bar": greenIcon};
>
> > >>       private function searchLocations(event:Event):void {
> > >>         var geocoder:ClientGeocoder = new ClientGeocoder();
> > >>         geocoder.addEventListener(
> > >>           GeocodingEvent.GEOCODING_SUCCESS,
> > >>           function(event:GeocodingEvent):void {
> > >>           var placemarks:Array = event.response.placemarks;
> > >>           if (placemarks.length > 0) {
> > >>             searchLocationsNear(placemarks[0].point);
> > >>           }
> > >>         });
> > >>         geocoder.addEventListener(
> > >>           GeocodingEvent.GEOCODING_FAILURE,
> > >>           function(event:GeocodingEvent):void {
> > >>             Alert.show("Geocoding failed");
> > >>           });
> > >>         geocoder.geocode(address.text);
> > >>       }
>
> > >>     public function searchLocationsNear(center:LatLng):void {
> > >>      // var searchUrl:String = 'http://imagine-it.org/storelocator/
> > >> phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng()
> > >> + '&radius=' + radius.text;
> > >>      var searchUrl:String = 'http://localhost/mapProject/connections/
> > >> genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius='
> > >> + radius.text;
> > >>      var xmlString:URLRequest = new URLRequest(searchUrl);
> > >>      var xmlLoader:URLLoader = new URLLoader(xmlString);
> > >>      xmlLoader.addEventListener("complete", parseLocationsXml);
> > >>     }
>
> > >>     public function parseLocationsXml(event:Event):void{
> > >>         map.clearOverlays();
> > >>         storeLocations.removeAll();
>
> > >>         var markersXML:XML= newXML(event.target.data);
> > >>         var markers:XMLList = markersXML..marker;
> > >>         var markersCount:int = markers.length();
> > >>         if (markersCount == 0) {
> > >>          map.setCenter(new LatLng(40, -100), 4);
> > >>          Alert.show("No stores found. Try a different address");
> > >>          return;
> > >>        }
> > >>        var bounds:LatLngBounds = new LatLngBounds();
> > >>         for (var i:Number = 0; i < markersCount; i++) {
> > >>             var markerXml:XML= markers[i];
> > >>             var name:String = markerx...@name;
> > >>             var address:String = markerx...@address;
> > >>             var distance:Number = new Number(markerx...@distance);
> > >>             var type:String = markerx...@type;
> > >>             var latlng:LatLng = new LatLng(markerx...@lat,
> > >> markerx...@lng);
> > >>             var storeInfo:String = "<b>" + name + "</b>\n<br/>" +
> > >> address;
> > >>             var marker:Marker = createMarker(latlng, name, storeInfo,
> > >> type);
> > >>             storeLocations.addItem({StoreInfo: storeInfo, Distance:
> > >> distance.toFixed(2), Marker: marker});
> > >>             bounds.extend(latlng);
> > >>             // customIcons[type].markers.push(marker);
> > >>             map.addOverlay(marker);
> > >>         }
> > >>         storeLocations.refresh();
>
> ...
>
> read more »
-- 
You received this message because you are subscribed to the Google Groups 
"Google Maps API For Flash" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-maps-api-for-flash?hl=en.


Reply via email to