[OpenLayers-Users] Re: problems with a popup sans marker
Puneet Kishor
punk.kish at gmail.com
Mon Oct 17 19:16:30 EDT 2011
never mind... changing the popup style to OpenLayers.Popup.FramedCloud() solves everything. The only remaining issues are:
1. I want only the layer to listen instead of the entire map to listen. In other words, if the user clicks on the map where there is no layer coverage, I don't want the ajax event to be fired.
2. I want to close an existing popup when a new popup is made. That is, only one popup should be active on the map at a time.
On Oct 17, 2011, at 6:06 PM, Puneet Kishor wrote:
> Ok. I figured out the cause of the problem below, but I don't know the solution --
>
> On Oct 17, 2011, at 5:06 PM, Puneet Kishor wrote:
>
>> I am registering an click event to the map
>>
>> map.events.register("click", map, popUp);
>>
>> Then querying the db for the feature at the point of click
>>
>> popUp: function(e) {
>>
>> // From google to latlng
>> var lonlat = map.getLonLatFromViewPortPx(e.xy).transform(
>> proj.google,
>> proj.latlng
>> );
>>
>> $.ajax({
>> url: "http://server/feature.json",
>> data: {lng: lonlat.lon, lat: lonlat.lat},
>> type: "GET",
>> dataType: "jsonp",
>> success: function(data) {
>> var html = unravel_data(data);
>> var c = map.getLonLatFromViewPortPx(e.xy);
>>
>> map.addPopup(
>> new OpenLayers.Popup.Framed(
>> "featurePopup",
>> new OpenLayers.LonLat(c.lon, c.lat),
>> new OpenLayers.Size(200, 150),
>> html,
>> null,
>> false,
>> null
>> )
>> );
>> }
>> });
>> }
>>
>> But, instead of the popup, I get the following in my console
>>
>> OpenLayers.js: 2367: TypeError: 'null' is not an object (evaluating 'this.positionBlocks[this.relativePosition]')
>>
>> Note that I want a popup without a marker or a vector feature. So, I have two questions --
>>
>
>
> I believe, in order to have a Framed popup, I need to pass in an anchor which, per the docs, "must expose a ‘size’ OpenLayers.Size and ‘offset’ OpenLayers.Pixel (generally an OpenLayers.Icon)."
>
> If I change the above to just `new OpenLayers.Popup()` then it works fine, but that is not what I want. How do I draw an Framed or FramedCloud popup without creating an icon? I simply want to click on a polygon and create a popup anchored to the point of click.
>
>
>> 1. How can I successfully draw the above popup?
>> 2. Can I register the event to a layer instead of to the map? The reason is, this particular layer doesn't cover the entire map, so I want the feature query to be performed only when the user clicks on the layer.
>>
>> --
>> Puneet Kishor
>
More information about the Users
mailing list