Jesse,
Here is what our SpatialQuery do with projection(any projection, not only Bing) in your scenario:
1. Convert the queried feature to the original value.
2. Do the topology calculation with the original shape file data.
3. Convert the results to the projected value and return.
And here is a simple scenario like what you’re facing: a shape file contains one record( point1 (100.9999999, 100.9999999) ), id is 1, and the layer has a projection, so if using the GetFeatueById(1) it will return a projected point, let’s assume it’s point2 (20000.9999998,20000.9999998), now it has lost some accurate, and then do the spatial query, SpatialQuery(point2, Intersects), like I said above, the method will first convert point2 to the original value which should be point1, but as the accurate lost, it might be converted to point3 (100.9999997,100.9999997), so the result is not intersecting.
Then you said you test it with a projected shape file, it works well, here is the reason: the projected shape file contains one record point2 (20000,9999998, 20000,9999998), and GetFeatureById returns the same point cause there is no projection, and the spatial query will go correctly cause there is no more accurate lost.
So I think there are two solutions for you:
1. Use the projected shape file, and do not set the projection.
2. Add the converted features of the shape file to an InMemoryFeatureLayer and do the queries with it, it works like the projected shape file, but it’s not a good option if the shape file is too big.
You’ll receive an email with the modified code of your sample which is working fine with the InMemoryFeatureLayer.
Hope it helps,
Edgar