1. Download the free trial version

Library GoogleMapsExtras

Discussion in 'Additional libraries, classes and official updates' started by warwound, Feb 11, 2013.

  1. warwound

    warwound Expert Licensed User

    GoogleMapsExtras is an ongoing project to implement more of the Google Maps Android v2 classes in Basic4Android.

    Currently the library allows you to create these objects:

    Tutorials for each object will be uploaded to the Google Maps Android v2 tutorial thread.

    Martin.

    Attached Files:

    Last edited: Aug 24, 2013
    FireDroid, ronnhdf, Theera and 2 others like this.
  2. Erel

    Erel Administrator Staff Member Licensed User

  3. warwound

    warwound Expert Licensed User

  4. rboeck

    rboeck Active Member Licensed User

    Hi,

    it works! Thanks a lot!
    Greetings from austria
    Reinhard
  5. warwound

    warwound Expert Licensed User

    Last edited: Feb 21, 2013
  6. warwound

    warwound Expert Licensed User

    GoogleMapsExtras updated to version 1.01

    This minor update adds support for Polygon holes, you can now create complex polygons!

    The Polygon object now has a read/write property named Holes.

    The PolygonOptions object has a read-only property named Holes and an AddHole method.

    The PolygonOptions object Points property is now read-only, instead of writing to the Points property (as with version 1.00) you instead use the new AddPoint or AddPoints methods.
    This is syntactically better as the library actually adds any points passed to any existing points - it does not replace existing point.

    The Polygon object however still has a read-write property named Points - setting this property will replace any existing points.

    I'll upload a code example to the Google Maps Android v2 tutorial thread shortly.

    Version 1.01 is attached to the first post in this thread.

    Martin.
    Last edited: Feb 21, 2013
  7. Erel

    Erel Administrator Staff Member Licensed User

    These are great features. Thank you for sharing!
  8. warwound

    warwound Expert Licensed User

    GoogleMapsExtras updated to version 1.10

    This update adds support for the OnMarkerDragListener.

    You can now detect Drag, DragEnd and DragStart events on your draggable Markers.

    I'll upload a code example to the Google Maps Android v2 tutorial thread shortly.

    Version 1.10 is attached to the first post in this thread.

    Martin.
  9. warwound

    warwound Expert Licensed User

    GoogleMapsExtras updated to version 1.20

    This update adds support for the GoogleMap.InfoWindowAdapter.

    You can now use your own View as either the InfoWindow or just the default InfoWindows content.

    InfoWindowAdapter
    Events:
    • GetInfoContents (Marker1 As Marker) As View
    • GetInfoWindow (Marker1 As Marker) As View
    Methods:
    • Initialize (EventName As String)
    • IsInitialized As Boolean

    I have also added a new method to the GoogleMapsExtras object:

    AnimateToBounds (GoogleMap1 As GoogleMap, LatLngBounds1 As LatLngBounds, Padding As Int)
    Adjust and animate the map center and zoom level so that it fully contains the LatLngBounds.
    Padding is defined in units of pixels.


    This method will be handy to fit the map to a number of markers.
    You can create a LatLngBounds object that represents the geographical area that your markers are within and then animate the map to this bounds (fit the map to the markers).

    I'll upload some example code to the Google Maps Android v2 tutorial thread shortly.

    Version 1.20 is attached to the first post in this thread.

    Martin.
  10. ErickAsas

    ErickAsas Member Licensed User

    Extra Label Request

    Hi Martin,

    Can you possibly incorporate this request with your GoogleMapsExtras?

    You can find more info on this at Using the ELabel extension.

    Thanks in advance.

    Erick
  11. bluedude

    bluedude Well-Known Member Licensed User

    Great work, what about heatmaps?

    Hi warhound,

    Great work on the Android maps stuff. Have you ever taken a look at heatmaps?

    There is a project here that might be interesting: https://code.google.com/p/mapex/

    With this we could visualize a lot of information :)

    Cheers,
  12. warwound

    warwound Expert Licensed User

    Hi.

    That heat map library is in fact written for the original android v1 map library, not the android v2 map library that we have in b4a.

    Verison 2 of the map library is 100% different to verison 1 - any classes that were used in version 1 simply don't exist in version 2, so it's not possible to use that heatmap library in b4a.
    Google have made all the java classes in version 2 final classes - they cannot be extended to add extra functionality - and that makes creating libraries such as the heatmap just about impossible.

    Martin.
    Last edited: Oct 25, 2013
  13. warwound

    warwound Expert Licensed User

    As i just posted - Google have very much limited the developers ability to create new map objects such as a custom overlay (an elabel would be a custom overlay).

    I am part way through adding support for the Projection object to GoogleMapsExtras.
    The Projection has methods: FromScreenLocation and ToScreenLocation which convert LatLng to and from a Point.
    A Point represents 'screen coordinates' which i'd guess are coordinates relative to the View that contains the MapFragment.

    So it may be possible to place a b4a View such as a Label at a geographical position by converting that position to screen coordinates and then adding the Label to the MapFragment container using the screen coordinates.
    BUT you'd need to reposition that Label whenever the map camera moves - doesn't sound like it'd work very smoothly and could take a fair amount of processing to re-position just a handful of Labels.

    If you want to add labels to your map and there is no requirement for these labels to be clickable then you could create a semi-transparent set of custom map tiles.
    These tiles would be blank except where your labels have been drawn onto them.
    Then you'd add these custom tiles to the map as a TilesOverlay.
    Sounds possible and performance would be no problem.
    BUT (another but!) you'd need to host these tiles online or experiment to see if a TilesOverlay can load tiles from the device external memory.

    Martin.
  14. warwound

    warwound Expert Licensed User

    GoogleMapsExtras updated to version 1.30

    This update adds support for these objects:

    Please follow the links for each new object to get more more info about the features the new object provides.
    (I don't have time to create and upload examples code for all of these new objects at the moment so will leave you all to work out usage and syntax).

    There is some example code already posted that may be of interest though:

    IMPORTANT
    The Google Maps Android API v2 library was updated Feb 2013, you will need to update your SDK to the latest version to use some of the new features of GoogleMapsExtras:

    https://developers.google.com/maps/documentation/android/releases#february_2013

    After updating your SDK be sure that you also copy the new (updated) google-play-services.jar to your b4a additional libraries folder, overwriting the old version.

    I see a new Circle overlay has been introduced and will make that a part of the next GoogleMapExtras update.

    Version 1.30 is attached to the first post in this thread.

    Martin.
  15. warwound

    warwound Expert Licensed User

    GoogleMapsExtras updated to version 1.31

    This update adds support for the new Circle and CircleOptions classes.

    Circle
    Methods:
    • IsInitialized As Boolean
    • Remove
      Remove the Circle from the map.
    Properties:
    • Center As LatLngWrapper
      Get or Set the Circle center.
    • FillColor As Int
      Get or Set the Circle fill color.
    • Id As String [read only]
      Get the Circle Id.
    • Radius As Double
      Get or Set the Circle radius in meters.
    • StrokeColor As Int
      Get or Set the Circle stroke color.
    • StrokeWidth As Float
      Get or Set the Circle stroke width.
    • Visible As Boolean
    • ZIndex As Float
      Get or Set the Circle ZIndex.
    CircleOptions
    Methods:
    • Center (LatLng1 As LatLng) As CircleOptions
      Sets the center using a LatLng.
    • Center2 (Latitude As Double, Longitude As Double) As CircleOptions
      Sets the center using latitude and longitude.
    • FillColor (FillColor As Int) As CircleOptions
      Sets the fill color.
    • GetCenter As LatLngWrapper
      Gets the center as a LatLng.
    • GetFillColor As Int
      Gets the fill color.
    • GetRadius As Double
      Gets the radius in meters.
    • GetStrokeColor As Int
      Gets the stroke color.
    • GetStrokeWidth As Float
      Gets the stroke width.
    • GetZIndex As Float
      Gets the ZIndex.
    • Initialize
      Creates a new CircleOptions.
    • IsInitialized As Boolean
    • IsVisible As Boolean
      Gets the visibility of this circle.
    • Radius (Radius As Double) As CircleOptions
      Sets the radius in meters.
    • StrokeColor (StrokeColor As Int) As CircleOptions
      Sets the stroke color.
    • StrokeWidth (StrokeWidth As Float) As CircleOptions
      Sets the stroke width.
    • Visible (Visible As Boolean) As CircleOptions
      Sets the visibility.
    • ZIndex (ZIndex As Float) As CircleOptions
      Sets the ZIndex.

    GoogleMapsExtras object has a new method:

    AddCircle (GoogleMap1 As GoogleMap, CircleOptions1 As CircleOptions) As Circle
    Add a circle to the map.

    As mentioned in my last post, you will need to update your SDK to the latest version of the google-play-services.jar library and make sure that you copy the new version from your SDK folder to your B4A additional libraries folder.

    Version 1.31 is attached to the first post in this thread.

    Martin.
  16. warwound

    warwound Expert Licensed User

    GoogleMapsExtras updated to version 1.32

    This is just a bug fix.
    The Point object can now be successfully initialized.

    Version 1.32 is attached to the first post in this thread.

    Martin.
  17. warwound

    warwound Expert Licensed User

    Last edited: Apr 29, 2013
  18. b4AMarkO

    b4AMarkO Member Licensed User

    I have been enjoying this .... and already adapting it to apps ....

    But, question .... unless I have overlooked it .... I cant seem to find anything about how to fire an address and get back lat long cords

    Seems this would be the fundamental aspect of using a map yes?

    IS there an example or tutorial of how this is done?

    Knowing the addresses I made a few changes to your code and ran it so my markers were correct

    IM sure it can be done better but it works

    Code:
    Dim myList(4As String 
           myList(
    0) = "7700 Riverside Dr."
           myList(
    1) = "71st & Riverside Dr."
           myList(
    2) = "71st & Yale"
           myList(
    3) = "81st & Riverside Dr."
           
            
    Dim Coords() As Double=Array As Double(36.051458, -95.97146236.0606416155383, -95.975832939147936.060849, -95.92214636.046446, -95.9652328491211 )
            
    Dim i As Int
            
    For i=0 To Coords.Length-2 Step 2
                
    Dim Marker1 As Marker
                Marker1=GoogleMap1.AddMarker(Coords(i), Coords(i+
    1), myList(i/2)) '"Marker #"&(i/2))
                Marker1.Draggable=True
            
    Next
    Last edited: May 2, 2013
  19. warwound

    warwound Expert Licensed User

    Hi.

    You need the Geocoder library.

    Martin
  20. ivanomonti

    ivanomonti Well-Known Member Licensed User

    ERROR

    Parsing code. 0.01
    Compiling code. 0.02

    ObfuscatorMap.txt file created in Objects folder.
    Compiling layouts code. 0.00
    Generating R file. 0.07
    Compiling generated Java code. Error
    B4A line: 58
    GoogleMapsExtras1.SetOnMarkerDragListener(mGmap, OnMarkerDragListener1)
    javac 1.6.0_27
    src\b4a\example\main.java:342: package com.google.android.gms.maps does not exist
    _googlemapsextras1.SetOnMarkerDragListener((com.google.android.gms.maps.GoogleMap)(mostCurrent._vvvvv1.getObject()),(com.google.android.gms.maps.GoogleMap.OnMarkerDragListener)(_onmarkerdraglistener1.getObject()));
    ^
    1 error

    what's missing!! sdk

    intalled google play service rev7 ok

Share This Page

Loading...