Fixed
Status Update
Comments
br...@google.com <br...@google.com>
rs...@gmail.com <rs...@gmail.com> #3
i have the same issue with 1.13.0, when using the GMSMapViewDelegate - (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker returning a custom UIView.
rs...@gmail.com <rs...@gmail.com> #4
dg@ could you please post a repro case to github, I'm interested to see a full working sample. Thanks!
sh...@gmail.com <sh...@gmail.com> #5
The below git repo contains the code that the issue occurs.
Note that If I reverse the Google Map API version to 1.12.3, the code works fine.
https://github.com/benba5/IssueGoogleMap1.13.0
Thank you very much
^__^
Note that If I reverse the Google Map API version to 1.12.3, the code works fine.
Thank you very much
^__^
ju...@gmail.com <ju...@gmail.com> #6
Thanks for the repro benlbenl5!
da...@gmail.com <da...@gmail.com> #7
We have a work around for this issue. Add the following code to the custom info window:
override func didMoveToSuperview() {
superview?.autoresizesSubviews = false;
}
override func didMoveToSuperview() {
superview?.autoresizesSubviews = false;
}
br...@google.com <br...@google.com> #8
Damir, thanks for your detailed report. I've raised a new issue with engineering so we will have another look at this.
da...@gmail.com <da...@gmail.com> #9
deleted
tc...@gmail.com <tc...@gmail.com> #10
Thank you so much. It works.
However, I found the new problem which is the info window disappear unexpectedly.
The scenario is that
- Click a marker to display an info window
- Click the empty area on the map
- The info window disappear unexpectedly.
Note that the info window is expected to display because I have a code to set the selectedMarker of mapview if user click an empty area.
It seems to me that setting selectedMarker doesn't work sometimes
The git for reproducing the issue
https://github.com/benba5/IssueGoogleMap1.13.0/tree/investigate_infowindow
Thank you very much
However, I found the new problem which is the info window disappear unexpectedly.
The scenario is that
- Click a marker to display an info window
- Click the empty area on the map
- The info window disappear unexpectedly.
Note that the info window is expected to display because I have a code to set the selectedMarker of mapview if user click an empty area.
It seems to me that setting selectedMarker doesn't work sometimes
The git for reproducing the issue
Thank you very much
zv...@gmail.com <zv...@gmail.com> #11
@benlbenl, please raise a new issue for the new bug. Thanks!
[Deleted User] <[Deleted User]> #12
[Comment deleted]
[Deleted User] <[Deleted User]> #13
Sometimes it looks for me like Google intentionally ignores quality in iOS part of business :(
an...@gmail.com <an...@gmail.com> #14
This bug has been fixed in version 1.13.1. Thanks for the reports!
go...@gmail.com <go...@gmail.com> #15
Any update? Using reverseGeocodeCoordinate I get back the wrong address ~5% of the time
[Deleted User] <[Deleted User]> #16
I guess our other option is to use MKLocalSearchRequest.
[Deleted User] <[Deleted User]> #17
Definitely blocked from using Google services as result of this bug. Too bad for you guys, I guess...
co...@canadianmortgageapp.com <co...@canadianmortgageapp.com> #18
3:20 am -
We just spend couple hours setting up autocomplete to with the goal to extract address component, (street name, number, city, etc..) and then ran into this. GRRRRR. One quick way we went around this issue was to use google autocomplete to retrieve coordinates and then feed it into apple CLGeocoder reverseGeocodeLocation and get the required info, but what the **** are we doing. We prefer to use this SDK all the way. Not sure if MKLocalSearchRequest provides auto-complete but we'll see.
Note to self. research SDKs to the bone and don't assume Google got it all for you from the start. :(
We just spend couple hours setting up autocomplete to with the goal to extract address component, (street name, number, city, etc..) and then ran into this. GRRRRR. One quick way we went around this issue was to use google autocomplete to retrieve coordinates and then feed it into apple CLGeocoder reverseGeocodeLocation and get the required info, but what the **** are we doing. We prefer to use this SDK all the way. Not sure if MKLocalSearchRequest provides auto-complete but we'll see.
Note to self. research SDKs to the bone and don't assume Google got it all for you from the start. :(
co...@canadianmortgageapp.com <co...@canadianmortgageapp.com> #19
is this safe?
NSArray* dic = [place valueForKey:@"addressComponents"];
for (int i=0;i<[dic count];i++) {
if ([[[dic objectAtIndex:i] valueForKey:@"type"] isEqualToString:@"street_number"]) {
NSLog(@"street_number: %@",[[dic objectAtIndex:i] valueForKey:@"name"]);
}
NSArray* dic = [place valueForKey:@"addressComponents"];
for (int i=0;i<[dic count];i++) {
if ([[[dic objectAtIndex:i] valueForKey:@"type"] isEqualToString:@"street_number"]) {
NSLog(@"street_number: %@",[[dic objectAtIndex:i] valueForKey:@"name"]);
}
go...@gmail.com <go...@gmail.com> #20
Bump! :)
tc...@gmail.com <tc...@gmail.com> #21
Google devs... This issue is there since I don't remember which version, you are releasing new version every month without the fix of that problem.
Come on...
Can you please just add the property address like it was initially documented before ?!
Once we look up details of a place, we should be able to access to any properties related to the address. Country, city, address, zipcode... any other details related to the address.
place.address
place.locality
place.country
place.zipcode
Please, can you address that problem for the next version 1.10.6 ?
Thanks
Come on...
Can you please just add the property address like it was initially documented before ?!
Once we look up details of a place, we should be able to access to any properties related to the address. Country, city, address, zipcode... any other details related to the address.
place.address
place.locality
place.country
place.zipcode
Please, can you address that problem for the next version 1.10.6 ?
Thanks
go...@gmail.com <go...@gmail.com> #22
This is a BIG blocker for my team, please look into this, guys!
so...@gmail.com <so...@gmail.com> #23
Hi guys,
I was flabbergasted to learn there's no way to get structured address out of the Place and now I have to user reverse-geocoding. Could you please expose it, as you already have it deep inside the object.
I was flabbergasted to learn there's no way to get structured address out of the Place and now I have to user reverse-geocoding. Could you please expose it, as you already have it deep inside the object.
ar...@gmail.com <ar...@gmail.com> #24
This is a shame for all Google developers. I recently talked with a guy from Google and their attitude toward iOS SDK was obvious. They made it just to have it. I had a lot of issues using it and they are suggesting to use Javascript maps and api in webview.
tc...@gmail.com <tc...@gmail.com> #25
Do you have an address where I can send my resume to the Google Map iOS SDK team please ?
I will be happy to join the team just to make the fix myself in the SDK. Seems like some help it needed.
I will be happy to join the team just to make the fix myself in the SDK. Seems like some help it needed.
br...@google.com <br...@google.com> #26
et...@crashpadlife.com <et...@crashpadlife.com> #27
Glad the sarcasm of Tchikovani's comment was completely lost on you. Can you please just fix this or mark this as wont-fix if you aren't going to fix it? This thread is becoming extremely painful.
For those who need an actual working solution, here is a sample of the workaround I use. NOTE: Use at your own risk, if they change the API of the SDK, this may crash.
- (void)locationSearch:(CPLocationSearchViewController *)search chooseLocation:(GMSPlace *)location {
NSString __block *streetNumber, *streetName;
_.arrayEach([location valueForKey:@"addressComponents"], ^(id obj) {
NSString *type = [obj valueForKey:@"type"];
NSString *val = [obj valueForKey:@"name"];
NSLog(@"addressComponent - %@: %@", type, val);
if ([type isEqualToString:@"street_number"]) {
streetNumber = val;
}
if ([type isEqualToString:@"route"]) {
streetName = val;
}
... (repeat for each component important to you)
});
}
For those who need an actual working solution, here is a sample of the workaround I use. NOTE: Use at your own risk, if they change the API of the SDK, this may crash.
- (void)locationSearch:(CPLocationSearchViewController *)search chooseLocation:(GMSPlace *)location {
NSString __block *streetNumber, *streetName;
_.arrayEach([location valueForKey:@"addressComponents"], ^(id obj) {
NSString *type = [obj valueForKey:@"type"];
NSString *val = [obj valueForKey:@"name"];
NSLog(@"addressComponent - %@: %@", type, val);
if ([type isEqualToString:@"street_number"]) {
streetNumber = val;
}
if ([type isEqualToString:@"route"]) {
streetName = val;
}
... (repeat for each component important to you)
});
}
[Deleted User] <[Deleted User]> #28
Any word on this. Its definitely a show stopper and I hate using @crashpadlife's hack but so far its the only way without having to make an extra api call to reverse geocode.
re...@gmail.com <re...@gmail.com> #29
re: #28: Here's a rudimentary Swift version. Same caveats apply.
func getLocationAddressParts (place : GMSPlace)
{
var name = ""
var streetNum = ""
var street = ""
var city = ""
var state = ""
var country = ""
if let theName =place.name
{
name = theName
}
let comp = place.valueForKeyPath("addressComponents") as! NSArray
for obj : AnyObject in comp
{
let val =obj.name
let fieldName = obj.type as String
print("addressComponent = \(fieldName) : \(val)")
switch fieldName
{
case "street_number":
streetNum = val
case "route":
street = val
case "locality":
city = val
case "administrative_area_level_1":
state = val
default:
break
}
}
}
func getLocationAddressParts (place : GMSPlace)
{
var name = ""
var streetNum = ""
var street = ""
var city = ""
var state = ""
var country = ""
if let theName =
{
name = theName
}
let comp = place.valueForKeyPath("addressComponents") as! NSArray
for obj : AnyObject in comp
{
let val =
let fieldName = obj.type as String
print("addressComponent = \(fieldName) : \(val)")
switch fieldName
{
case "street_number":
streetNum = val
case "route":
street = val
case "locality":
city = val
case "administrative_area_level_1":
state = val
default:
break
}
}
}
[Deleted User] <[Deleted User]> #30
Hi everyone,
i integrated now (03/02/16) this library, but have the same problem, the addressComponents object is not visible, but i adopted the classic solution whit foreach all dictionary element, is possible that Google Maps Developer Team after 1 year don't solve this problem? all of this it's very ridiculous.
i integrated now (03/02/16) this library, but have the same problem, the addressComponents object is not visible, but i adopted the classic solution whit foreach all dictionary element, is possible that Google Maps Developer Team after 1 year don't solve this problem? all of this it's very ridiculous.
br...@google.com <br...@google.com> #31
We've exposed a structured address components to GMSPlace objects in v1.12.2. Please update.
go...@gmail.com <go...@gmail.com> #32
Yay!!!! Woohoo! Thanks guys
jo...@detroitlabs.com <jo...@detroitlabs.com> #33
[Comment deleted]
jo...@jonshier.com <jo...@jonshier.com> #34
I've created a Swift extension to make it easier to deal with this awful components API. I think I have the keys right but "street_number" isn't available as a constant from the framework, so it's in there manually.
extension CollectionType where Generator.Element == GMSAddressComponent {
var streetAddress: String? {
return "\(valueForKey("street_number")) \(valueForKey(kGMSPlaceTypeRoute))"
}
var city: String? {
return valueForKey(kGMSPlaceTypeLocality)
}
var state: String? {
return valueForKey(kGMSPlaceTypeAdministrativeAreaLevel1)
}
var zipCode: String? {
return valueForKey(kGMSPlaceTypePostalCode)
}
var country: String? {
return valueForKey(kGMSPlaceTypeCountry)
}
func valueForKey(key: String) -> String? {
return filter { $0.type == key }.first?.name
}
}
extension CollectionType where Generator.Element == GMSAddressComponent {
var streetAddress: String? {
return "\(valueForKey("street_number")) \(valueForKey(kGMSPlaceTypeRoute))"
}
var city: String? {
return valueForKey(kGMSPlaceTypeLocality)
}
var state: String? {
return valueForKey(kGMSPlaceTypeAdministrativeAreaLevel1)
}
var zipCode: String? {
return valueForKey(kGMSPlaceTypePostalCode)
}
var country: String? {
return valueForKey(kGMSPlaceTypeCountry)
}
func valueForKey(key: String) -> String? {
return filter { $0.type == key }.first?.name
}
}
br...@google.com <br...@google.com>
br...@google.com <br...@google.com> #35
We have added missing Place Type constants in version 1.13. Thanks for the report!
ch...@gmail.com <ch...@gmail.com> #36
[Comment deleted]
ch...@gmail.com <ch...@gmail.com> #37
This issue is still not resolved though you've marked it as fixed. The GMPlace object still does not expose a GMSAddress object; neither these missing 'place type' constants nor the address components resolve this. The address components array still requires me to query and loop through the array to find the keys I want versus being able to simple call methods on a GMSAddress object. Please re-open the issue an add an actual GMSAddress object onto GMPlace.
[Deleted User] <[Deleted User]> #38
Yep, this is a nightmare. Hours wasted!
ch...@gmail.com <ch...@gmail.com> #39
How should we proceed to get this issue resolved? Should I open a separate bug report or can you all reopen this ticket? It would be great to talk to someone directly too.
ch...@gmail.com <ch...@gmail.com> #40
Still looking for an update here on re-opening the issue to fix the actual reported bug.
si...@gmail.com <si...@gmail.com> #41
I've noticed the HTTP API returns the short name as a part of the response. Is there any reason why the short name is not included as a part of GMSAddressComponent's interface?
se...@gmail.com <se...@gmail.com> #42
Another issue I've noticed is that if the place types is "street_address", then the addressComponents is empty. I would still expect the usual array of components, however inefficient it is.
br...@google.com <br...@google.com> #43
As this issue has been closed, please open new bug reports with the details of the issue you are experiencing.
ch...@galleyfoods.com <ch...@galleyfoods.com> #44
The original issue (now over a year old) was to provide a GMSAddress object along with a GMSPlace object. That has still not been resolved and this issue should not have been closed as Fixed. Accessing address information from a GMSPlace is still much too cumbersome and it remains greatly beneficial to have access to the actual GMSAddress object.
br...@google.com <br...@google.com> #45
Chris, I understand your position. Engineering reviewed the original request and provided the solution they did based on what was possible given the data provided by our back end systems. The bug was marked fixed to communicate that the provided solution was the best that we can accomplish given the data we have access to. My request for new issues was for the observations by Sean and Simon that they are seeing new breakages that should be raised and tracked individually.
Thanks!
Thanks!
ch...@galleyfoods.com <ch...@galleyfoods.com> #46
I appreciate the follow up; I will take a look at the current state of the SDK and submit a new bug report taking into account that addition of those addressComponents. Would really like to avoid wrapping the places API myself if possible.
Description
Operating system version: iOS 8.3
Google Maps SDK for iOS version: 1.1.0
Hardware model: NA
*********************************************************
For developers viewing this issue: please click the 'star' icon to be
notified of future changes, and to let us know how many of you are
interested in seeing it resolved.
*********************************************************